2016-12-24 2 views
0

у меня есть отношения между двумя таблицамиEntity Framework ссылка нулевой указатель исключение

Первая таблица: Пользователь

Id | Name | 

Вторая таблица: Пакет

Id | UserSenderId | UserReceiverId 

Я использую Entity Framework с .Net Framework 3.5 и проблема, с которой я сталкиваюсь, заключается в том, что Entity Framework создает два ref а также UserReference1 и UserReference, но UserReference1 всегда равно нулю. Если я не включают User таблицу, как это:

db.Packages.Include("User") 

тогда UserReference также нуль.

У меня действительно проблемы с этой проблемой, есть проблема с использованием нескольких внешних ключей, указывающих на один и тот же первичный ключ?

EDIT 1:

Ссылка пользователя в Package частичном классе:

[global::System.Data.Objects.DataClasses.EdmRelationshipNavigationPropertyAttribute("Tema4Model", "FK_Package_User_Receiver", "User")] 
[global::System.CodeDom.Compiler.GeneratedCode("System.Data.Entity.Design.EntityClassGenerator", "4.0.0.0")] 
[global::System.Xml.Serialization.XmlIgnoreAttribute()] 
[global::System.Xml.Serialization.SoapIgnoreAttribute()] 
[global::System.Runtime.Serialization.DataMemberAttribute()] 
public User User 
{ 
    get 
    { 
     return ((global::System.Data.Objects.DataClasses.IEntityWithRelationships)(this)).RelationshipManager.GetRelatedReference<User>("Tema4Model.FK_Package_User_Receiver", "User").Value; 
    } 
    set 
    { 
     ((global::System.Data.Objects.DataClasses.IEntityWithRelationships)(this)).RelationshipManager.GetRelatedReference<User>("Tema4Model.FK_Package_User_Receiver", "User").Value = value; 
    } 
} 

/// <summary> 
/// There are no comments for User in the schema. 
/// </summary> 
[global::System.ComponentModel.BrowsableAttribute(false)] 
[global::System.CodeDom.Compiler.GeneratedCode("System.Data.Entity.Design.EntityClassGenerator", "4.0.0.0")] 
[global::System.Runtime.Serialization.DataMemberAttribute()] 
public global::System.Data.Objects.DataClasses.EntityReference<User> UserReference 
{ 
    get 
    { 
     return ((global::System.Data.Objects.DataClasses.IEntityWithRelationships)(this)).RelationshipManager.GetRelatedReference<User>("Tema4Model.FK_Package_User_Receiver", "User"); 
    } 
    set 
    { 
     if ((value != null)) 
     { 
      ((global::System.Data.Objects.DataClasses.IEntityWithRelationships)(this)).RelationshipManager.InitializeRelatedReference<User>("Tema4Model.FK_Package_User_Receiver", "User", value); 
     } 
    } 
} 

/// <summary> 
/// There are no comments for User1 in the schema. 
/// </summary> 
[global::System.Data.Objects.DataClasses.EdmRelationshipNavigationPropertyAttribute("Tema4Model", "FK_Package_User_Sender", "User")] 
[global::System.CodeDom.Compiler.GeneratedCode("System.Data.Entity.Design.EntityClassGenerator", "4.0.0.0")] 
[global::System.Xml.Serialization.XmlIgnoreAttribute()] 
[global::System.Xml.Serialization.SoapIgnoreAttribute()] 
[global::System.Runtime.Serialization.DataMemberAttribute()] 
public User User1 
{ 
    get 
    { 
     return ((global::System.Data.Objects.DataClasses.IEntityWithRelationships)(this)).RelationshipManager.GetRelatedReference<User>("Tema4Model.FK_Package_User_Sender", "User").Value; 
    } 
    set 
    { 
     ((global::System.Data.Objects.DataClasses.IEntityWithRelationships)(this)).RelationshipManager.GetRelatedReference<User>("Tema4Model.FK_Package_User_Sender", "User").Value = value; 
    } 
} 

/// <summary> 
/// There are no comments for User1 in the schema. 
/// </summary> 
[global::System.ComponentModel.BrowsableAttribute(false)] 
[global::System.CodeDom.Compiler.GeneratedCode("System.Data.Entity.Design.EntityClassGenerator", "4.0.0.0")] 
[global::System.Runtime.Serialization.DataMemberAttribute()] 
public global::System.Data.Objects.DataClasses.EntityReference<User> User1Reference 
{ 
    get 
    { 
     return ((global::System.Data.Objects.DataClasses.IEntityWithRelationships)(this)).RelationshipManager.GetRelatedReference<User>("Tema4Model.FK_Package_User_Sender", "User"); 
    } 
    set 
    { 
     if ((value != null)) 
     { 
      ((global::System.Data.Objects.DataClasses.IEntityWithRelationships)(this)).RelationshipManager.InitializeRelatedReference<User>("Tema4Model.FK_Package_User_Sender", "User", value); 
     } 
    } 
} 

Любая помощь приветствуется, спасибо!

+0

Возможные дубликат [Что такое NullReferenceException, и как это исправить?] (Http://stackoverflow.com/questions/4660142/what-is-a-nullreferenceexception-and- how-do-i-fix-it) – jdphenix

+0

Пожалуйста, покажите код C# для сущностей 'Package' и' User', которые были созданы Entity Framework или написаны самим собой в случае использования кода. –

+0

@jdphenix Я прочитал ответы на этот вопрос, но это не проблема, которая у меня есть, моя проблема заключается в том, что идентификатор Entity Framework, создающий ссылку только для одного внешнего ключа из двух упомянутых выше – sixfeet

ответ

1

Попробуйте db.Packages.Include("User").Include("User1")

+0

Он работает, но я не понимаю, почему, можете ли вы объяснить, пожалуйста? – sixfeet

+0

Думаю, вы предполагаете, что 'Include' загружает все свойства навигации с типом' User'. Но строковый параметр 'Include' означает конкретное свойство не всех свойств этого типа. Вы должны называть 'Include' для каждого свойства навигации, которое вы собираетесь включить. –

+0

Ооо, я понимаю, спасибо! – sixfeet

Смежные вопросы