使用Translate 映射EF实体列

我正在使用entity framework。 我正在调用一个返回多个数据集的存储过程。 其中一个结果集映射到我为其定义了枚举的实体,并定义了一个字符串支持属性以接收结果并解析枚举。

public class OrderInfo { [Key, Required, DatabaseGenerated(DatabaseGeneratedOption.Identity)] public Guid orderID { get; set; } [NotMapped] public BillingStatus billingStatus { get; set; } [Required, Column("billingStatus")] public string billingStatusString { get { return billingStatus.ToString(); } private set { billingStatus = (BillingStatus)Enum.Parse(typeof(BillingStatus), value); } } } 

不幸的是,在调用db.ObjectContext.Translate(…)时会忽略注释。 我收到一条错误消息

 var cmd = db.Database.Connection.CreateCommand(); cmd.CommandText = "[dbo].[GetOrders]"; cmd.CommandType = System.Data.CommandType.StoredProcedure; db.Database.Connection.Open(); var reader = cmd.ExecuteReader(); var orders = ((IObjectContextAdapter)db) .ObjectContext .Translate(reader, "Orders", MergeOption.AppendOnly) .ToList(); reader.NextResult(); 

数据注释中定义的映射不受遵守,Translate方法尝试通过其实际名称billingStatusString而不是其映射值billingStatus绑定到backing属性。

EntityFramework.dll中出现’System.Data.Entity.Core.EntityCommandExecutionException’类型的第一次机会exception

附加信息:数据读取器与指定的“Orders.OrderInfo”不兼容。 类型为“billingStatusString”的成员在数据读取器中没有具有相同名称的相应列。

任何人都知道这是为什么,或有一个解决方法?