带有实体框架6的手工POCO?

Mal*_*tor 1 c# asp.net entity-framework poco

我正在考虑将EF 6用于即将在一个非常大的组织中进行的小型项目.拥有POCO业务对象对我来说至关重要,但我可以找到的关于如何使用EF进行POCO的所有选项似乎都依赖于自动生成工具,这些工具试图将整个数据库结构映射到POCO对象.我们有许多数据库,数百个表和数百个视图,我只想暂时使用其中的一些表(任何一个项目都只希望使用它们中的一小部分).

另外,我不希望必须映射出许多外来属性,甚至是这些表存储的一些常规属性.所以我真的想手工制作这些POCO对象,然后将它们连接到EF并让它进行映射 - 我仍然希望能够使用EDMX文件而不必制作我自己的ObjectContext,如果可能的话.

我觉得这很简单,但我真的找不到任何资源!如果有人能指出我正确的方向,那将是非常有帮助的.

Dav*_*ast 6

实体框架具有代码优先方面,也可以映射到现有表.这允许您使用POCO来表示您的表.您可以创建映射类,以便将POCO与数据库映射逻辑分开.

您可以指定POCO中是否存在表列的不同命名.但是,如果两者之间没有区别,则可以省略它.

using ProjectName.Models;
using System;
using System.Collections.Generic;
using System.Data.Entity.ModelConfiguration;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

public class ProfileMapping : EntityTypeConfiguration<Profile>
{
    public ProfileMapping()
    {
        // Primary Key
        this.HasKey(t => t.Id);

        // Map POCO name to Column Name
        this.Property(t => t.Firstname)
            .HasColumnName("First_Name")
            .HasMaxLength("256");


        // Table Mapping
        this.ToTable("Profiles");

        // Relationships
        this.HasRequired(t => t.Roles);
    }
}
Run Code Online (Sandbox Code Playgroud)

使用DbContext可以注册这些映射.

我建议使用Entity Framework Power Tools从现有数据库生成DbContext.

http://visualstudiogallery.msdn.microsoft.com/72a60b14-1581-4b9b-89f2-846072eff19d