在具有外键的表中的实体框架中添加数据

时间:2012-06-15 10:24:09

标签: c# entity-framework

我正在努力在具有外键关系的表中插入数据。我确实读过了一个 关于如何做到这一点的文章很少,但没有多大帮助,并决定开辟一个新问题。

场景:

用户表在角色表ID上有一个外键。

在角色表上Id是整数并且是自动递增的

这是我的代码,

        SalesTrainerEntities db = new SalesTrainerEntities();

        var user = new User();
        var role = db.Role.FirstOrDefault(r => r.ID == 1);

        user.UserName = "test";
        user.Pass = "123";
        user.CreatedBy = "test";
        user.DtCreated = DateTime.Now;
        user.Role = role;

        //user.RoleId = 1;
        //user.EntityKey = new EntityKey("Role", "ID", 1);
        //user.RoleReference.EntityKey = new EntityKey("Role", "ID", 1);

        db.AddToUser(user);

        db.SaveChanges();

在保存更改时,我收到错误消息

Unable to update the EntitySet 'User' because it has a DefiningQuery and no    <InsertFunction> element exists in the <ModificationFunctionMapping> element to support the current operation.

任何指针都将受到高度赞赏。

此致

Sab的

1 个答案:

答案 0 :(得分:0)

我曾经以这种方式添加子实体,我假设用户和角色之间的关系为1:N。

using (Entities db = new Entities())
{              
    var user = new User();
    // fill user data..

    var newRole = db.Role.FirstOrDefault(r => r.ID == 1);
    if(newRole!=null)
    {
        user.roles.AddObject(newRole);
        db.users.AddObject(user);
        db.SaveChanges();
    }
}

//Edit - Updating db

using (Entities db = new Entities())
{ 
    var existingUser = db.User.FirstOrDefault(r => r.ID == 100);
    if(existingUser !=null)
    {
       existingUser.Name = "New name";
       db.SaveChanges();
    }
}