任何人都可以推荐一个设计良好的开源项目与实体框架?我对Entity Framework 4有一些喜好,但我很想知道人们在一些大型项目中是如何使用这个框架的。任何人都可以使用Entity Framework推荐一个设计良好的开源项目吗?
非常感谢。
陈道明
任何人都可以推荐一个设计良好的开源项目与实体框架?我对Entity Framework 4有一些喜好,但我很想知道人们在一些大型项目中是如何使用这个框架的。任何人都可以使用Entity Framework推荐一个设计良好的开源项目吗?
非常感谢。
陈道明
虽然不是很大,你可以检查出All-In-One Code Framework样本。我认为那里至少有一些实体框架的例子。一个具体实例是:
How to work with table relationships and entity inheritances in ADO.NET Entity Data Model
此代码示例包括一步一步的指导如何与实体数据模型以不同的方式工作,其中包括一一对多关联,多对一 - 许多关联,一对一关联,表格合并,表格分割,逐层次继承和每类表格继承。
编辑:
他们只是增加了另一个例子:
CSEFCodeOnly,VBEFCodeOnly
这两个例子说明了在EF4新功能如何 使用一个,代码 只有创建EDM元数据和 相应的.edmx文件与运行期间的POCO 实体类相关联。他们 还演示了一些基本插入和 查询操作来测试由Code Only生成的EDM 元数据。
我发现这个问题会寻找相同的答案。到目前为止,我发现的最好的是 http://www.nopcommerce.com/ - 自1.70(2010年7月7日)以来,他们一直在使用实体框架。
请参阅http://kigg.codeplex.com/ 强烈建议使用实体框架的ALT.NET风格。
它展示了一种从ORM中抽象出自己的方式。
不同的项目有类似的架构: http://shrinkr.codeplex.com/
这是2014年的问题的答案仍然是否定的。
原因不明显,希望我能解释一下。大多数典型的开源项目都是成功的,因为它们是可扩展的,因此可以让它周围的社区发展壮大。可扩展意味着扩展实体,从而以某种方式为每个插件扩展数据库。但是,EF仅支持实体图的一个版本,因此您不能说添加插件,然后升级原始数据库。它会破坏移民。因此人们在OS项目中不使用EF。
你可以看到人们正努力在nopcommerce上创建插件。任何需要对象附加属性的插件都需要在核心中进行代码更改。实质上,任何具有插件的nopcommerce的部署都是该项目的一个分支。最终用户最终成为开发人员,因为他们现在必须执行源代码控制,合并等。在网上销售东西的人没有这种技能。他们只是想安装插件,然后去。所以......不,EF对于开源项目来说太糟糕了。对于庞大的整体项目,这是伟大的。
不要认为这是一个正确的说法。确实,EF只能支持一个图形,但不应该使创建插件成为不可能。危险的扩展应该能够添加或覆盖现有的功能,但修改现有的实体并不总是要求。这实际上取决于更高级别的可扩展性支持,而不是EF强加的限制。 – Woland 2014-12-15 03:31:12
如果真的取决于某种'更高级别'的魔法,nopcommerce肯定还没有找到它。他们已经在使用像IoC和MEF这样的东西。目前没有修复,因为EF中的迁移是基于快照的。实际上,甚至还有来自微软的文档,http://msdn.microsoft.com/en-us/data/dn481501.aspx请注意,文章仅在一个类中演示了该问题,但该问题也适用于变化在不同的类别中。搜索“实体框架代码第一迁移团队环境” – DraconPern 2015-01-12 03:44:30
是的,您无法使用迁移进行插件自定义。应用程序的设计必须支持可扩展性,而EF则支持将这些插件升级/迁移到新版本(供应商)。它不应该用于特定业务需求的定制。 – Woland 2015-01-20 19:30:37
签出名为Virto Commerce的产品。该网站是http://virtocommerce.com。它是一个基于Entity Framework的开源项目,使用Repository和Unit Of Work模式。源代码是https://github.com/VirtoCommerce/vc-community。
你至少应该披露你的子公司virtocommerce.com。 – bummi 2014-12-14 21:55:31
是的,我是Virto Commerce的架构师,但问题是使用实体框架的例子,我很乐意通过开源与大家分享。我不是在讨论风险投资比任何事情都好,或者比较它,所以我没有看到披露的重点。同时点击我的个人资料会显示我的关联。 – Woland 2014-12-15 02:14:24
我不会争辩,这是你的决定,我只是试图防止你随着时间的推移而陷入困境。 [避免明显的自我推销。](http://stackoverflow.com/help/behavior) – bummi 2014-12-15 07:44:55
我不认为你会找到一个。所有精心设计的使用nhibernate;) – jgauffin 2011-01-06 13:52:00