实体框架 - edm类型映射不止一个

时间:2012-12-13 21:49:25

标签: entity-framework

我有一个简单的实体数据模型(使用VS2010),我从一个包含三个不相关的表的简单SQL Server数据库进行逆向工程。

我尝试使用以下代码将数据保存到数据库:

var dbOptions = new ARC_WHENTECHModel.TEMP_LANDED_WHENTECH_OPTION_POSITION();

//first map fields required for standard di processing
dbOptions.OPTION_POSITION_SOURCE_ID = webSvcOption.TDR + "_" + webSvcOption.CNTR + "_" + webSvcOption.CRV;
dbOptions.INSERTED_DT = DateTime.Now;
dbOptions.CURRENT_IND = "Y";

//now map the data we've pulled from the web service call
dbOptions.CA = webSvcOption.CA;
dbOptions.CDTP = webSvcOption.CDTP;
dbOptions.CMD = webSvcOption.CMD;
dbOptions.CNTR = webSvcOption.CNTR;
dbOptions.CPP = webSvcOption.CPP;
dbOptions.PDTP = webSvcOption.PDTP;
dbOptions.SPR = webSvcOption.SPR;
dbOptions.TDR = webSvcOption.TDR;


context.AddToTEMP_LANDED_WHENTECH_OPTION_POSITION(dbOptions);
context.SaveChanges();

但我得到以下例外:

An EdmType cannot be mapped to CLR classes multiple times. The EdmType 'RDLMServiceTier.TEMP_LANDED_WHENTECH_FUTURES_POSITION' is mapped more than once.

在designer.cs代码中的以下行(base.AddObject):

[global::System.CodeDom.Compiler.GeneratedCode("System.Data.Entity.Design.EntityClassGenerator", "4.0.0.0")]
public void AddToTEMP_LANDED_WHENTECH_OPTION_POSITION(TEMP_LANDED_WHENTECH_OPTION_POSITION tEMP_LANDED_WHENTECH_OPTION_POSITION)
{
    base.AddObject("TEMP_LANDED_WHENTECH_OPTION_POSITION", tEMP_LANDED_WHENTECH_OPTION_POSITION);
}

有人可以告诉我可能做错了吗?我对Entity Framework没有多少经验(它过去总是“刚刚工作”)。我想下一步可​​能是反映EF代码,但这将非常棘手,因为我在远程机器上调试,我没有很大的空间来安装额外的软件。

由于

罗布。

2 个答案:

答案 0 :(得分:1)

Gert正确回答了这个问题 - 还有另一个模型文件副本。

答案 1 :(得分:0)

我遇到了类似的问题,导致它的具体问题是:

[EdmComplexTypeAttribute(NamespaceName = "MyModel", Name = "MyDuplicatedClassName")]

修复重复的名称后一切正常。