使用Entity Framework Code First与NoSQL数据库

25

我可以使用Entity Framework Code First方法与NoSql数据库一起使用吗?而对于一个有大量数据的应用程序来说,NoSql相较于SQL数据库有何优势。


1
最近我看到EF7将会更好地支持不同的数据模型,比如NoSQL。我认为这个问题值得社区再次关注。 - Markus
2个回答

26

我过去几个月一直在使用BrightstarDb (http://www.brightstardb.com/),它提供了基于Entity Framework的代码优先模型生成。

BrightstarDb是一个NoSql数据库,也是一个RDF三元组存储库,因此它允许实体之间具有比大多数传统NoSql数据库更复杂的关系。


1
我同意,这是我发现唯一支持EF的nosql数据库。你的模型变成了数据的“视图”,到目前为止我非常满意它。 - Isuru Fonseka

10

我能否使用Entity Framework Code First方法来操作NoSQL数据库?

不行。

NoSql相对于SQL数据库在处理大数据时有什么优势?

引用

NoSQL数据库系统通常针对检索和添加操作进行了高度优化,通常除记录存储(例如键值存储)之外,提供的功能很少。与完整的SQL系统相比,运行时灵活性减少了,但某些数据模型的可扩展性和性能方面得到了显著的提升。

简而言之,当处理大量数据且数据性质不需要关系数据模型时,NoSQL数据库管理系统非常有用。该数据可以被结构化,但这是次要的,真正重要的是存储和检索大量数据的能力,而不是元素之间的关系。例如,在一个或几个关联数组中存储数百万个键值对或存储数百万个数据记录。这对于增长的元素列表的统计或实时分析(例如Twitter帖子或来自大量用户的Internet服务器日志)非常有用。


@Darin,随着EF5的发布,是否有可能在NoSQL源上创建某种接口,然后将其与EF一起使用? - Raheel Khan
不,这是不可能的。EF 是面向 SQL 的。 - Darin Dimitrov
6
这是不正确的,我在使用 EF Code first 4.0 及以上版本时,MongoDB 和 Hadoop 均取得了成功。 - Charlie Brown
EF是面向SQL的事实并不意味着它在理论上不能用于NoSQL数据库。只需放弃Linq/EntityQuery部分,利用实体定义和CRUD、乐观并发性进行实体合并等功能。一些键值存储(如Redis)甚至支持行聚合查询。为NoSQL开发EF适配器可能是可行的。 - Sergey Kostrukov

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接