EF6 - необязательный иностранный ключ всегда нулевойC#

Место общения программистов C#
Ответить
Anonymous
 EF6 - необязательный иностранный ключ всегда нулевой

Сообщение Anonymous »

У меня есть приложение C# (C# 7.5), которое использует EF6. < /p>
У меня есть таблица, которая содержит два иностранных ключа. Оба являются одним из одного: одно отношения и оба необходимы.

Код: Выделить всё

[Table("Bob")]
public class bob {
[Key]
public Guid Id {get;set;}
public String Name {get;set;}

public Guid WorkingId { get;set;}
[ForeignKey("WorkingId")]
public virtual WorkingTable WorkingTable {get;set;}

public Guid NotWorkingId {get;set;}
//[ForeignKey("NotWorkingId")  // commented out as causes exception
public virtual NotWorkingTable NotWorkingTable {get;set;}

}

[Table("WorkingTable")]
public class WorkingTable {
[key]
public Guid Id {get;set;}
public String AValue {get;set;}
}

[Table("NotWorkingTable")]
public class NotWorkingTable {
[key]
public Guid Id {get;set;}
public String AValue {get;set;}
}
< /code>
Обе отношения определены в SQL Server как: -< /p>
ForeignKeyBaseTable:       Bob
ForeignKeyColumns:         WorkingId  (and NotWorkingId)
Primary/Unique Key Base:   WorkingTable  (and NotWorkingTable)
Primary/Unique Key Column: Id  (for both)
< /code>
Код, который я использую внутри dbcontext, < /p>
 var results = BobDbSet.AsNoTracking().ToList();
Если я изучаю результаты [0] в качестве примера, я могу видеть, что WorkingD и Workingtable заполнены, но, хотя NotWorkingId имеет допустимое значение (решает цель в t-sql), но NotWorkingTable-NULL.
Примечание: я использую ASP.NET 4.8 (не ASP /> У кого -нибудь есть идея о том, как диагностировать эту проблему? Насколько мне известно, добавление свойства иностранного ключа в определение виртуального класса заставляет EF попытаться сопоставить его с первым ключом, определенным в этом классе (в данном случае идентификатор).>

Подробнее здесь: https://stackoverflow.com/questions/796 ... lways-null
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»