Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用Translate映射EF实体列<;T>;_C#_Entity Framework - Fatal编程技术网

C# 使用Translate映射EF实体列<;T>;

C# 使用Translate映射EF实体列<;T>;,c#,entity-framework,C#,Entity Framework,我正在使用实体框架。我正在调用一个返回多个数据集的存储过程。其中一个结果集映射到一个实体,我为该实体定义了枚举,并定义了一个字符串支持属性以接收结果并解析出枚举 public class OrderInfo { [Key, Required, DatabaseGenerated(DatabaseGeneratedOption.Identity)] public Guid orderID { get; set; } [NotMapped] public Billin

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

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<OrderInfo>(reader, "Orders", MergeOption.AppendOnly)
               .ToList();
reader.NextResult();
var cmd=db.Database.Connection.CreateCommand();
cmd.CommandText=“[dbo].[GetOrders]”;
cmd.CommandType=System.Data.CommandType.StoredProcess;
db.Database.Connection.Open();
var reader=cmd.ExecuteReader();
变量顺序=((IObjectContextAdapter)db)
.ObjectContext
.Translate(读卡器,“订单”,合并选项。仅附录)
.ToList();
reader.NextResult();
数据批注中定义的映射不受尊重,Translate方法尝试通过其实际名称
billingStatusString
而不是其映射值
billingStatus
绑定到backing属性

EntityFramework.dll中首次出现类型为“System.Data.Entity.Core.EntityCommandExecutionException”的异常

其他信息:数据读取器与指定的“Orders.OrderInfo”不兼容。“billingStatusString”类型的成员在数据读取器中没有同名的对应列


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

您可能必须将数据库列映射到名为
billingStatus
的字符串属性,然后使用另一个属性来检索枚举(即
billingStatusEnum
),它清楚地显示错误号
“billingStatusString”,数据读取器中没有同名的对应列
?@Sampath,我希望应用于
billingStatusString
属性的属性
列(“billingStatus”
)应该通知EF数据映射来自billingStatus=>billingStatusString。打电话给Translate的时候显然没有,但我想说清楚一点。为什么这是个坏主意?因为我有一个非常类似的问题,你找到解决办法了吗?