首页 新闻 赞助 找找看

关联元数据类型的问题,求解!

0
悬赏园豆:10 [已解决问题] 解决于 2011-09-22 12:07

我的MVC项目中,EF分部类,假设实体A、B、C、D字段如下,省略了public、类型和get,set哈

A{AID,Title,BID,CID,DID,public virtual B b,public virtual C c,public virtual D d}

B{BID,Title,CID,DID,public virtual C c,public virtual D d}

C{CID,Title}

D{DID,Title}

也就是说A、B都加载了C、D,但A又多加载了B。

在MVC里实现了A的Details,报错,

类型“B”的关联元数据类型包含以下未知属性或字段: C, D。请确保这些成员的名称与主类型上的属性的名称匹配。

请问如何解决这种情况?穷人,没分,请见谅!!

BorgChen的主页 BorgChen | 初学一级 | 园豆:11
提问于:2011-09-22 05:35
< >
分享
最佳答案
1
收获园豆:10
dudu | 高人七级 |园豆:31075 | 2011-09-22 08:09

DUDU老大,不知道你说的是不是[ForeignKey("")]?

最早我的部分类定义是有加的,出错之后我也是想到这个,注释掉之后再运行也是这样出错。但是我定义的形式跟你写的不一样,你是

{

[ForeignKey("c")]

public int CID;

public C c

}

我的呢是这样的形式

{

public int CID;

[ForeignKey("CID")]

public C c

}

实际上,这两种形式都是可以用的!甚至不加[ForeignKey("")]都可以读出来正确的c.Title。

话说我按照你的形式改了[ForeignKey("")]之后运行仍然出错,开始想是不是问题并非出现在这里,于是想到了之前因为数据库表里原本有数据(我用的是Database First),创建关系图的时候校验原有数据出错,再者园子里有一篇文章提到说不太赞成在数据库里创建关系,所以这个表B实际上并没有创建表C、D的关系。于是跑去创建关系,并关闭原有数据校验,成功保存关系图,刷新EDMX并重新生成。错误消失了。。。

很奇怪为什么[ForeignKey("")]加或不加,或加在哪,实际上都可以,最终决定的是数据库里创建的关系?

 

BorgChen | 园豆:11 (初学一级) | 2011-09-22 08:52
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册