关系一对一的EntityFramework错误

时间:2013-05-02 11:12:48

标签: c# .net entity-framework

我在sql server 2008中创建了2个表

表1:用户(UserID,Name,FirstName,Login,Password ...),PK:UserID
表2:SessionUser(UserID,Date,Adress),PK:UserID

两个表之间的关系在sql server 2008中设置,关系为1比1,外键在表SessionUser(FK:userID)中 用户表中有用户(实线)
当我尝试在会话表中添加会话时,它向我显示了这个错误:

DistributionSSEntities.SessionUser”中的实体参与“FK_SessionUser_User”关系。找到0个相关的“用户”。 1'用户'是预期的。

代码:

DistributionSSEntities db = new DistributionSSEntities();
SessionUser sessionUser = new SessionUser();

            sessionUser.UserID = 12; // this ID existe in User table
            sessionUser.Date = "12-12-2012";
            sessionUser.AdressIP = "192.168.1.1";


            db.AddToSessionUser(sessionUser);
            db.SaveChanges();

如何解决此问题 感谢名单。

1 个答案:

答案 0 :(得分:0)

设置UserID不会起作用。

您可以:
- 从数据库中选择用户,然后设置User属性
- 创建具有所需ID的新User并将其附加到上下文中 - 或者,直接设置外键引用:

sessionUser.UserReference.EntityKey = new System.Data.EntityKey(sessionUser.UserReference.RelationshipSet.EntityContainer.Name + "." + sessionUser.UserReference.TargetRoleName, "ID", id);

它有点长,但你可以把它变成一个扩展方法,因为它派上用场。