我们有一个.net解决方案,它运行在不同的视图上(WinForms,asp.net) 作为数据访问层,我们使用实体框架4。 作为后端db,我们使用sql server和sqlCe Sqlce用于存储胖客户端的原始数据库副本。
通过这个星座来到我的问题:
是否可以对两个不同的数据存储使用相同的ObjectContext?
(sql server和sqlce中的相同db)
或者使用POCO或不同的架构是否更好?
由于
答案 0 :(得分:1)
如果本地数据库(SQL CE)与大数据库(SQL Server)具有完全相同的结构,则可以通过将不同的连接字符串传递给ObjectContext
构造函数来使用相同的映射。实体/ POCO将是相同的。
如果您的本地数据库没有相同的结构,则需要两个映射集(EDMX),您可能需要两个不同的上下文(除非您直接使用ObjectContext
)。如果您的本地映射使用与服务器映射相同的实体,则可以将它们映射到相同的POCO类。
答案 1 :(得分:1)
好的,对我来说很好。
1.替换ssdl文件。如本文所述:Preparing an Entity Framework model for multi provider support
2.将* .ssdl文件的构建操作设置为嵌入式资源。
3.Changed my connectionstring
public static String GetEntityConnectionString()
{
string csdl = "Test";
string ssdl = "Namespace.NewSsdl.ssdl"; //multi provider support (.ssdl embedded in ressource)
string msl = "Test";
EntityConnectionStringBuilder builder = new EntityConnectionStringBuilder();
//Provider
builder.Provider = "System.Data.SqlClient";
builder.ProviderConnectionString = GetProviderConnectionStringPL();
//Metadata
builder.Metadata = string.Format("res://*/{0}.csdl|res://*/{1}|res://*/{2}.msl", csdl, ssdl, msl);
return builder.ToString();
}