1

我在我的存储库中使用以下内容:

    public virtual T Add(T entity)
    {
        DbEntityEntry dbEntityEntry = DbContext.Entry(entity);
        if (dbEntityEntry.State != EntityState.Detached)
        {
            dbEntityEntry.State = EntityState.Added;
        }
        else
        {
            DbSet.Add(entity);
        }
    }

我的实体都有一个主键,它是一个身份列。添加实体后,我想返回该实体,然后我可以填充网格并在网格中显示主键。

但是我怎样才能返回我添加的实体以及主键的详细信息呢?

仅供参考,这是我用于添加服务的代码:

        try
        {
            var item = _uow.Tests.Add(Test);
            _uow.Commit();
            var response = Request.CreateResponse<Test>(HttpStatusCode.Created, item);
            string uri = Url.Link("DefaultApi", new { id = item.Id });
            response.Headers.Location = new Uri(uri);
            return response;
        }
        catch (DbUpdateException ex)
        {
            return Request.CreateErrorResponse(HttpStatusCode.NotFound, ex);
        }

如果我离开我的存储库而不返回值而是向服务添加一些代码会更好吗?

4

1 回答 1

0

您的代码应该返回 id。检查您的映射文件中的iditem- 它应该如下所示:

public class ItemMap : EntityTypeConfiguration<Item>
{
    public ItemMap ()
    {
        // Primary Key
        this.HasKey(t => t.id);

        // Properties
        this.Property(t => t.id)
            .HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);

        // .....
    }
}

HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity)是告诉 EF 获取新生成的 sql 标识值的设置。

于 2013-05-02T09:10:12.770 回答