代码优先 EF4.1 + SQL Server CE4 +同步框架
是否可以同时使用 CF EF4.1、SQL Server Compact 4 和 Microsoft Sync Framework?
据我所知,MS Sync Framework 需要 SQL Server Compact 3.5,但 EF4.1 使用 SQL Server Compact 4...
更新 好的,我发现无法使用 microsoft 同步框架同步 mssql ce4。 那么是否可以使用mssql ce3.5作为实体框架4.1的存储?
Is it possible to use CF EF4.1, SQL Server Compact 4 and Microsoft Sync Framework together?
As I got, MS Sync Framework needs SQL Server compact 3.5, but EF4.1 use SQL Server Compact 4...
UPDATE
Ok, I see that it's not possible to sync mssql ce4 using microsoft sync framework. So Is it possible to use mssql ce3.5 as a storage for entity framework 4.1?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
Sync Framework 使用其提供程序直接针对数据库工作,并且不支持开箱即用地通过 EF。 Sql Compact 4 也是如此(请参阅 Sql Compact 4 未启用的场景
Sync Framework works directly against the databases using its providers and going thru EF is not supported out of the box. The same goes with Sql Compact 4 (see Scenarios not enabled by Sql Compact 4
不起作用 - 请参阅 此页面具有目前适用于 SQL Server CE 4 的限制:
Won't work - see this page with limitations that apply to SQL Server CE 4 for now:
SQL CE 3.5 不支持 Code First 方法(提供程序不支持 DDL 生成);但是,使用 EF 4.1 的模型优先或数据库优先方法应该可以正常工作。
SQL CE 3.5 does not work with the Code First approach (the provider doesn't support DDL generation); however it should work just fine using the Model First or Database First approaches of EF 4.1.
是的,这是可能的 - 如果您不依赖创建或迁移功能 (EF 5.0)。
因此,首先使用 app.config 和命名配置将 EF 配置为使用 SQL CE 提供程序
,并
在使用数据上下文之前禁用创建和迁移功能
现在您可以访问数据库了。显然,您必须手动创建表。
警告:
插入服务器生成的密钥不适用于 CE 3.5。因此,您必须在客户端管理它们(最好使用 GUID 来防止密钥冲突)。此外,即使您打算自己管理密钥,您也需要小心。这样定义密钥
会让 EF 认为密钥是在服务器端生成的。因此,您需要使用 EF 的 Fluent API 定义关键属性,将
DatabaseGenerateOption
设置为 None:这可以在配置类(如示例中所示)或数据上下文的
中完成OnModelCreating 函数。
Yes, it is possible - if you do not rely on the creation or migration features (EF 5.0).
So, first configure EF to use the SQL CE provider using the app.config and a named configuration
and
disable the creation and migration functionality before you use your data context
Now you can access the database. Obviously you will have to create the tables manually.
Caveat:
Inserting server generated keys does not work with CE 3.5. So you will have to manage them on the client side (best use GUIDs to prevent key conflicts). Furthermore, even if you plan to manage the keys yourself you need to watch out. Defining the key like this
will lead EF to believe that the key is generated on the server side. Therefore, you need to define the key properties using EF's fluent API to set the
DatabaseGeneratedOption
to None:This can be either done in a configuration class (as in the sample) or in the data contex's
OnModelCreating
function.根据这篇文章,SQL Server Compact 3.5 不能与 Entity Framework 4.1 Code First 提供程序一起使用。它可以与 EF 4.1 Model First 或 Database First 一起使用。
According to this post, SQL Server Compact 3.5 cannot be used with Entity Framework 4.1 Code First provider. It can be used with EF 4.1 Model First or Database First.