Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.03.2018, 19:29   #1
xofipet
Новичок
Джуниор
 
Регистрация: 13.03.2018
Сообщений: 9
По умолчанию Программа для работы с БД MS SQL. Помогите пожалуйста, не знаю что делать... завтра сдавать

Я уже неделю мучаюсь с программой, у меня не работал ms sql сервер я создала класс для инициализации EntityFramework. Теперь у меня будто бы не те типы, но я все делала как мне говорили.

Завтра сдавать, а у меня программа сломалась

Помогите кто может, я очень прошу
Изображения
Тип файла: png ошибка.png (62.9 Кб, 35 просмотров)
xofipet вне форума Ответить с цитированием
Старый 13.03.2018, 19:33   #2
xofipet
Новичок
Джуниор
 
Регистрация: 13.03.2018
Сообщений: 9
По умолчанию

Сил больше нет, вот мой проект

https://www.sendspace.com/file/zussvn

тут не влез
xofipet вне форума Ответить с цитированием
Старый 13.03.2018, 20:45   #3
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,520
По умолчанию

Так белым по чёрному написано:
Код:
The type of property 'BookId' on entity 'Subject' does not match the type of property 'Id' on entity 'Book' in the referential constraint 'Subject_Book1'.
у класса Book идентификатор одного типа, а в классе Subject внешний ключ BookId совсем другого типа и непонятно что с этим делать. Может быть потому что BookId прописан как string, а должен быть int?
pu4koff вне форума Ответить с цитированием
Старый 13.03.2018, 21:16   #4
xofipet
Новичок
Джуниор
 
Регистрация: 13.03.2018
Сообщений: 9
По умолчанию

Простите, я уже совсем не то отправила. Не получается нормально связать, может кто-то поможет в проекте?

У меня ошибка следующая
Цитата:
System.InvalidOperationException произошло Сообщение = Unable to determine the principal end of an association between the types 'VerlibrDiplom.Model.Magazine' and 'VerlibrDiplom.Model.Article'. The principal end of this association must be explicitly configured using either the relationship fluent API or data annotations.
xofipet вне форума Ответить с цитированием
Старый 13.03.2018, 21:59   #5
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,520
По умолчанию

Тут нужен код классов Article и Magazine.
В сообщении опять же достаточно доходчиво написано, что проблема в связывании этих двух классов и подсказка дана, что нужно аттрибуты расставить или при помощи Fluent API сделать то, что EF самостоятельно не может разрулить.
Такое может быть, например, если в классе Article несколько свойств имеют тип Magazine или наоборот. Тогда нужно использовать атрибут InverseProperty.
pu4koff вне форума Ответить с цитированием
Старый 13.03.2018, 22:02   #6
xofipet
Новичок
Джуниор
 
Регистрация: 13.03.2018
Сообщений: 9
По умолчанию

Цитата:
Сообщение от pu4koff Посмотреть сообщение
Тогда нужно использовать атрибут InverseProperty.
У меня с этим атрибутом все равно ошибка
Можете посмотреть у себя на компьютере что у меня не так?
Вот ссылка https://www.sendspace.com/file/zussvn
xofipet вне форума Ответить с цитированием
Старый 13.03.2018, 23:14   #7
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,520
По умолчанию

Там нужно определиться какая именно связь нужно между статьёй и журналом.
Сейчас там один к одному, а EF такое сам не может разрулить.
Вариантов там парочка:
1) у одного из классов делать ключ как FK на ключ второго класса и тогда EF самостоятельно всё разрулит
2) в OnModelCreating прописывать через FluentAPI конкретно что нужно. Что-то типа:
Код:
modelBuilder.Entity<Article>().HasOptional(a => a.Magazine1).WithOptionalDependent(m => m.Article1).WillCascadeOnDelete();
соответственно нужно убрать атрибут ForeignKey.
Дальше там аналогичная штука с автор-статья.
EF хочет знать кто из двух классов главнее и что со всем этим делать
pu4koff вне форума Ответить с цитированием
Старый 13.03.2018, 23:31   #8
xofipet
Новичок
Джуниор
 
Регистрация: 13.03.2018
Сообщений: 9
По умолчанию

А как сделать внешний ключ на ключ второго класса?
xofipet вне форума Ответить с цитированием
Старый 13.03.2018, 23:37   #9
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,520
По умолчанию

к свойству Id прописать атрибут ForeignKey, как это делается для любых других свойств.
pu4koff вне форума Ответить с цитированием
Старый 13.03.2018, 23:46   #10
xofipet
Новичок
Джуниор
 
Регистрация: 13.03.2018
Сообщений: 9
По умолчанию

Все равно не работает
Сделала так
Код:
        [Key, Required, DatabaseGenerated(DatabaseGeneratedOption.Identity), ForeignKey("Id")]
        public int Id { get; set; }
Цитата:
System.InvalidOperationException: "The property 'Id' cannot be configured as a navigation property. The property must be a valid entity type and the property should have a non-abstract getter and setter. For collection properties the type must implement ICollection<T> where T is a valid entity type."
В журнале есть статья. То есть журнал состоит из статей. И у статьи по автору связь с авторами.

Меня до защиты не допустят(
xofipet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Написать программу в ассемблере.Помогите пожалуйста срочно надо. завтра сдавать Gennadiy966 Помощь студентам 0 15.10.2015 19:01
Нужно завтра сдавать лабораторную. Я не сделал 3 задания и не знаю, как их делать bwitcher Помощь студентам 5 10.06.2010 00:02
Помогите пожалуйста решить задачу!!! Завтра сдавать, а я не решила... Elenochka Помощь студентам 1 09.11.2009 14:39
Пожалуйста,помогите решить задачи в Паскале.Завтра сдавать MOLOTok+ Помощь студентам 2 05.06.2009 12:46
Помогите пожалуйста.. завтра сдавать.... Задача по QBasic IndividBezLica Помощь студентам 3 26.05.2009 01:04