小编Piz*_*000的帖子

添加时获取DBEntityEntry的主键

我试图获取我在EF5应用程序中插入,更新或删除的每个条目的主键信息.我使用类似这样的代码:

//Get collection of each insert, update, or delete made on the entity. 
IEnumerable<DbEntityEntry> changedEntries = this.ChangeTracker.Entries()
    .Where(e => e.State == EntityState.Added
        || e.State == EntityState.Modified
        || e.State == EntityState.Deleted);

foreach (DbEntityEntry entry in changedEntries)
{
    //Get primary key collection
    EntityKey key = ((IObjectContextAdapter)this).ObjectContext.ObjectStateManager
        .GetObjectStateEntry(entry.Entity).EntityKey;

    string keyName;
    //Get name of first key. Make sure a collection was returned.
    if (key.EntityKeyValues != null)
        keyName = key.EntityKeyValues[0].Key;
    else
        keyName = "(NotFound)";
}
Run Code Online (Sandbox Code Playgroud)

但是,此代码的问题在于,当将新记录插入数据库时​​,它无法正常工作.当条目的状态是EntityState.Added时,key.EntityKeyValues具有空值(此代码将keyName的值设置为"(NotFound)".

有没有办法在插入记录时获取主键的列名?

c# entity-framework primary-key entity-framework-5

7
推荐指数
1
解决办法
4253
查看次数

OData 4 中的计算属性

我正在尝试使用 Web API 通过 OData v4 服务公开只读计算属性。我的搜索只出现 2014 年或更早的帖子,唯一的解决方案要么是过时的代码,要么是 OData 的下一个版本将支持计算属性的承诺(我确信从那时起已经有一些“下一个版本”) )。

对于我的示例,我将使用一个Person带有组合的类FullName

public class Person
{
    public int ID { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }

    // My calculated property.
    public string FullName
    {
        get
        {
            return FirstName + " " + LastName;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我的WebAPIConfig

using System.Web.Http;
using System.Web.OData.Builder;
using System.Web.OData.Extensions;
using TestService.Models;

namespace TestService
{
    public static class WebApiConfig …
Run Code Online (Sandbox Code Playgroud)

c# odata asp.net-web-api

4
推荐指数
1
解决办法
1683
查看次数