2011-03-24 94 views
0

是否可以在实体框架4(模型优先)中更改特定实体映射到的表的名称?我需要为每个客户创建一个模型,因此需要在表名前加上。也许更简单的是为每个客户使用一个数据库。最佳做法是什么?使用实体框架在运行时更改表名称4

回答

2

使用每个客户的数据库。数据库必须具有相同的模式。在运行时修改映射不是一个好主意。

编辑:指EDMX每个客户每个客户

模型。请注意,元数据是共享的。因此,在多租户应用程序(即我了解您的描述)中,每次元数据更改都会更改每个请求的元数据。在安全性和性能方面,使用单独的数据库看起来更好。

另一个问题是如果元数据可以在运行时更改。元数据存储在MetadataWorkspace中。你可以阅读它们,但我不确定你是否也可以修改它们(我将在周末检查它)。

+0

为什么它不是一个好主意?我参与了至少一些使用每个客户模型的项目(而不是每个客户的数据库)。并命名发布的企业产品Dynamics NAV。 – Jsfsn 2011-03-25 00:25:25

+0

@Jsfsn:作为一名具有8年SQL经验的Dynamics NAV技术顾问,我敢说NAV并不是一个如何组织数据库的好例子。我认为SAP Business One可以做得更干净,但是他们拥有那些非常缩短的表名。除此之外,NAV的公司与1个以上的客户并不相同,更像是1个客户的细分。 – 2011-03-25 08:57:52

0

EF生成的模型根据您的数据库模式生成。我没有看到如何改变EF中的模式。不在我的小脑袋里计算。这就是说,你可以编写一个存储过程来改变表格,并通过你的EF上下文来调用存储过程。

+0

我不想重命名该表,我希望EF为每个表名称使用用户定义的(如代码中)定义的前缀。我没有尝试过,但我确信使用EF CF是微不足道的。但是,内部查询有一个问题妨碍我使用EF CF。 – Jsfsn 2011-03-25 00:27:10