Entity framework 4 使用ADO.NET实体获取标识行值

Entity framework 4 使用ADO.NET实体获取标识行值,entity-framework-4,ado.net-entity-data-model,Entity Framework 4,Ado.net Entity Data Model,我在SQL Server 2008数据库中有下表: User -------------------------------------------------------- Id Numeric(18, 0) | Identity(1, 1) PK not null Name Nchar(20) | Not null 我使用ADO.NET实体数据模型执行以下操作: MyEntities entities; try { entities =

我在SQL Server 2008数据库中有下表:

User
--------------------------------------------------------
Id           Numeric(18, 0) | Identity(1, 1) PK not null
Name         Nchar(20)      | Not null
我使用ADO.NET实体数据模型执行以下操作:

MyEntities entities;
try
{
    entities = new MyEntities();
    if (entities.User.Count(u => u.Name == userName) == 0)
    {
        entities.User.AddObject(new User()
        {
            Name = userName
        });
        resultCode = 1;
        entities.SaveChanges();
    }
    else
    {
        resultCode = 2;
    }
}
catch
{
    resultCode = 3;
}
finally
{
    if (entities != null)
        entities.Dispose();
}

如何获取添加的新用户的User.Id?

尝试保留对用户对象的引用。调用SaveChanges()后,应自动更新Id。下面是对代码的修改,以演示:

if (entities.User.Count(u => u.Name == userName) == 0)
{
    User newUser = new User()
    {
        Name = userName
    };
    entities.User.AddObject(newUser);
    resultCode = 1;
    entities.SaveChanges();

    // newUser.Id should be populated at this point.
}

如果您的模型配置正确,并且您的Id属性标记为
StoreGeneratedPattern.Identity
,则只需调用该属性:

    var user = new User()
    {
        Name = userName
    };
    entities.User.AddObject(user);
    resultCode = 1;
    entities.SaveChanges();
    int id = user.Id; // it's here