EF4代码优先不支持泛型,可继承,对sql2008修改库不方便

ScottGu的blog发布了一篇新的文章

 

http://blog.joycode.com/scottgu/archive/2010/08/11/116042.joy

试了一下,发现也不是很爽。

首先泛型,编译后执行,直接就报错,不支持

The type '……' is not a valid entity type. Generic types are not supported.
我想的情景是这样的

比如我有两个实体,News和Products,这两个都允许评论,评论的实体是一样的。

因为需要有一个主外键关系

在信息实体里(News和Products)需要有

ICollection<Commet>
在评论里,需要有对应的News或Products;
我希望能够写一个泛型评论类,他的外键是这个泛型T
而在News或Products里,是一个ICollection<Commet<News>>或ICollection<Commet<Products>>
未果

 

所以用继承,建立一个评论的基类,此基类中不包含对News或Products的引用,留在子类中实现
可以很好的生成表 


但是如果,做一个泛型基类Commet<T>
子类类似于NewsCommet:Commet<News>
这样的时候,他会报错,找不到主键,哪怕你在泛型基类里设置了[Key]的attribute也不行
如果你在NewCommet里加一个id的话,他生成的表就只有id和newid(productid)这两个字段,其他的都丢失了

 

另外,在scott的blog里吹嘘了sqlce如何如何,但是因为不能很方便的看到库结构,所以我还是用了sql08
发现他那个自动更新库实在是不好用,因为你刚刚运行了一下,打开页面,查了数据,sql有连接,
重新运行需要同步数据库的时候,他是先删掉旧库再重新建一遍,他删库的时候,不能自动删除链接,所以删库步骤报错
当你手动删库之后,直接刷新页面还不行,因为他建库以后就缓存了,你必须先停掉web服务,然后重新启动。
麻烦

posted @ 2010-08-11 23:35  czcz1024  阅读(446)  评论(1编辑  收藏  举报