EF 4.1 Code First POCO 库

发布于 2024-12-01 01:23:38 字数 682 浏览 0 评论 0原文

我想提一下,我是 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

心是晴朗的。 2024-12-08 01:23:38

我不确定您的解决方案是否朝着正确的方向发展。为每种语言都有一个表感觉不太合适 - 您可以简单地在事件表中添加另一列来指定语言是什么?

您可以使用此列来检索具有所需语言的行。

关于表和 POCO 实体名称,您可以通过在 elvel 类中使用 System.ComponentModel.TableAttribute 来覆盖实体映射到的表,但为了保持 POCO 性,我喜欢使用 EntityTypeConfiguration 类并指定表名称。

例如:

public class CurrencyConfiguration : EntityTypeConfiguration<Currency>
    {
        public CurrencyConfiguration()
        {
            this.ToTable("Conv", "Ref");           
        }
    }

然后将其添加到 DbContext 上的 OnModelCreating 重写方法中的模型构建器中。

public class MyContext : DbContext
{
    public DbSet<Currency> Currencies { get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Configurations.Add(new CurrencyConfiguration());           
    }
}

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:

public class CurrencyConfiguration : EntityTypeConfiguration<Currency>
    {
        public CurrencyConfiguration()
        {
            this.ToTable("Conv", "Ref");           
        }
    }

Then you add it to the model builder in the OnModelCreating override method on the DbContext.

public class MyContext : DbContext
{
    public DbSet<Currency> Currencies { get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Configurations.Add(new CurrencyConfiguration());           
    }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文