EF 4.1 Code First POCO 库
我想提一下,我是 EF 的新手。
我正在使用 EF 4.1 创建数据访问库。
对于每个实体,我有两个用于翻译目标的表。
例如:事件==> Event_ar 表示阿拉伯语,Event_en 表示英语。
第一个问题:如果我编写两个相同实体类型的 DbSet,我会遇到错误
,所以我做了这个工作,这绝对不好:
public class Event_en : Event { }
public class Event_ar : Event { }
public class DB : DbContext
{
public DbSet<Event_ar> Events_ar { get; set; }
public DbSet<Event_en> Events_en { get; set; }
}
我想知道是否有解决方案?
第二个 实体应该与表同名,否则我会出错。
例如:“dbo.Event_ar”应该有一个 POCO“Event_ar”
它应该是与表具有相同名称的属性的名称。
这里:dbo.Events_ar ==> POCO "Events_ar"
为什么我无法操作名称?有什么解决办法吗?
I would like to mention that i am new to EF.
I am creating the Data Access library with EF 4.1.
For each Entity I have two tables for translation target.
ex : Events ==> Event_ar for Arabic and Event_en for English.
First Problem : I have an error if i write two DbSets of same Entity Type
so I did this work around which is absolutely not nice :
public class Event_en : Event { }
public class Event_ar : Event { }
public class DB : DbContext
{
public DbSet<Event_ar> Events_ar { get; set; }
public DbSet<Event_en> Events_en { get; set; }
}
I would like to know if there is a solution for it?
Second one
The Entity should be same name as a table, otherwise i have an error.
Ex : "dbo.Event_ar" should have a POCO "Event_ar"
It should be the name of the property that has the same name of the table.
Here : dbo.Events_ar ==> POCO "Events_ar"
Why I can't manipulate the names? Any solution?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我不确定您的解决方案是否朝着正确的方向发展。为每种语言都有一个表感觉不太合适 - 您可以简单地在事件表中添加另一列来指定语言是什么?
您可以使用此列来检索具有所需语言的行。
关于表和 POCO 实体名称,您可以通过在 elvel 类中使用 System.ComponentModel.TableAttribute 来覆盖实体映射到的表,但为了保持 POCO 性,我喜欢使用 EntityTypeConfiguration 类并指定表名称。
例如:
然后将其添加到 DbContext 上的 OnModelCreating 重写方法中的模型构建器中。
I'm not sure if your solution is going in the right direction. It doesn't feel right to have a table for every language - you could simply add another column to the event table that specifies what the language is?
The you could use this column to retrieve the row with the desired language.
About tables and POCO entity names, you can override the table the entity is mapped to either through the use of a System.ComponentModel.TableAttribute at the class elvel, but to maintain POCO-ness I like to use EntityTypeConfiguration classes and specify the table name.
for example:
Then you add it to the model builder in the OnModelCreating override method on the DbContext.