如何映射具有不同模式名称的动态表

时间:2012-04-05 06:02:45

标签: entity-framework-4.1 ef-code-first

我有表格,如

  

JS工程服务$ Web用户设置标题   Sachin Sales& Service Pvt Ltd $ Web用户设置标题

如何使用Ado.net实体框架POCO Code第一种方法映射这些表?表结构是相同的。我已经完成了POCO的单表名称和Schema作为Dbo只是声明表格

网络用户设置。

另外,我想问一下如何使用空格创建名称之类的表格。就像我上面提到的那样。如果我们想用空格创建表名如何动态生成表名为

  

Sachin Sales& Service Pvt Ltd $ Web用户设置标题

在Codefirst方法中使用Ado.net Entity框架?

之前我使用过Nhibernate,最近转移到了Ado.net Entity框架。喜欢Ado.net Codefirst方法中的Fluent配置。有人可以用上面提到的方案指导我如何处理它吗?任何虚拟属性都是受欢迎的。没关系。我想要动态生成表名基于这两个scemas包含完全相同的列的事实

1 个答案:

答案 0 :(得分:0)

...不确定这是否是你想要的,但似乎有两件事要解决:

表格命名,您是否尝试了以下内容...
(来自您的: DbContext实施类,方法protected override void OnModelCreating(DbModelBuilder modelBuilder)

modelBuilder.Entity<JSEngineeringServicesWebUser>()
    .ToTable("JS Engineering Services$Web User");

(注意:您可能需要对此进行试验,我没有使用过这样的名称而且没有方便测试,快速尝试)

另一个选项是使用[Table("JS Engineering Services$Web User")]作为实体类的属性。 (注意:我个人更喜欢使用流体方法,因为它可以让你获得更多的控制权(对于其他东西,键,关系),并且当“混合”两者时它通常不能正常工作)

...或者看看这个类似问题Can I change the default schema name in entity framework 4.3 code-first?

第二个问题是表格可能是'临时表'。实现这一点有点棘手。但是如果你在Db中拥有它们(只是查看并作为临​​时表工作)那么你可以继续前进并像其他任何实体一样映射。

如果你需要动态创建和拆除 - 请在这里考虑这篇文章,类似的东西......

Cache table with Entity Framework 4

编辑:来自以下评论,以更新...

如果'temp'表总是像你说的那样 -

然后你应该对Cache table with Entity Framework 4中的内容感到满意 - 创建一个匹配表模型的模型,甚至你可能需要创建一个这样的表(总是在那里,我不确定是否代码-first可能会抱怨如果在开始时没有匹配,或者使用'使用现有的数据库'进行w / o检查),并使用'直接'SQL运行查询(从上下文类,如链接中所述) - 和然后将输出列出到该模型类。它可能会起作用:))