powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / EF: Связь один-ко-многим со значениями null
6 сообщений из 6, страница 1 из 1
EF: Связь один-ко-многим со значениями null
    #38616133
SIW
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SIW
Гость
Всем добрый день. У меня возникла проблема с организацией связей в БД.
Пытаюсь в частности организовать связь один-ко-многим между двумя таблицами с нулевыми значениями.
Связь делаю через вторичный ключ.
Есть класс:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
public class Company
    {
        // другие свойства

        [Required(AllowEmptyStrings = true)]
        [DisplayFormat(ConvertEmptyStringToNull = false)]
        public int? ManagerID { get; set; } 
        public virtual Person Managers {get; set;}
    }  

public class Person
    {
        // другие свойства

        public virtual ICollection<Company> ManagersList { get; set; }
    }



 public class DB : DbContext
    {
        public DB()
            : base("DBConnection")
        {
        }

        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
             modelBuilder.Entity<Company>().HasRequired<Person>(s => s.Managers)
            .WithMany(s => s.ManagersList).HasForeignKey(s => s.ManagerID);
        }
        public DbSet<Company> Company { get; set; }
        public DbSet<Person> Person { get; set; }
       //Другие сущности
    }
             



При этом в создаваемой базе на поле ManagerID стоит значение Not Null, соответственно организацию без менеджера я создать не могу, а надо. При попытке создать организацию с пустым полем менеджера вылетает сообщение валидации.

Вариант принудительного указания параметров запрета каскадного удаления и пометки поля как необязательное не помогают. modelBuilder.Entity<Company>().Property(t => t.ParentId).IsOptional();
modelBuilder.Entity<Company>().HasRequired<Company>(s => s.Parent).WithMany(s => s.ChildList).HasForeignKey(s => s.ParentId).WillCascadeOnDelete(false)

Помогите решить проблему
...
Рейтинг: 0 / 0
EF: Связь один-ко-многим со значениями null
    #38616409
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SIW,

Замените HasRequired на HasOptional
http://msdn.microsoft.com/ru-ru/library/gg671230(v=vs.113).aspx
...
Рейтинг: 0 / 0
EF: Связь один-ко-многим со значениями null
    #38616559
SIW
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SIW
Гость
Lelouch,

Спасибо. Теперь буду знать о этом операторе.

Только теперь другая проблема возникла
Перестала корректно работать выборка списка компаний для отображения:

Код: c#
1.
2.
3.
4.
5.
         public ActionResult Index()
        {
            var company = db.Company.Include(c => c.Manager);
            return View(company.ToList());
        }



И соответственно отображение сего списка в DropDownList.

Мысли у меня по этому поводу отсутствуют. :(

PS Контроллер и вьюхи сгенерированы автоматически (для отладки и корректной работы модели). За логику проекта еще не брался - модель допиливаю.
...
Рейтинг: 0 / 0
EF: Связь один-ко-многим со значениями null
    #38616851
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SIW,

что именно не работает? не выполняется Include?
...
Рейтинг: 0 / 0
EF: Связь один-ко-многим со значениями null
    #38617127
SIW
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SIW
Гость
Lelouch,

Да, ругается на Include
Выдает ошибку: "Sequence contains no elements "
...
Рейтинг: 0 / 0
EF: Связь один-ко-многим со значениями null
    #38618653
SIW
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SIW
Гость
Спасибо всем за помощь.

Проблему решил, она оказалась не в коде.

Полностью переинициализировал БД - проблема решилась....
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / EF: Связь один-ко-многим со значениями null
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]