在Entity Framework中手动为单个表创建模型

时间:2015-10-29 23:15:42

标签: c# entity-framework linqpad

Q1。如何为我的数据库中的单列表手动创建一个简单的实体框架模型并进行查询?

表格如下:

CREATE TABLE dbo.MyTable (
    Value int NOT NULL CONSTRAINT PK_MyTable PRIMARY KEY CLUSTERED
);

我有一个POCO可以映射到它:

public class MyTable {
    public int Value { get; set; }
}

Q2。然后,如何使用MyTable lambda查询Expression<Func<MyTable, bool>>,该lambda将决定返回哪些行并将其投射到SQL中?

我是EF的新手,但不是C#或软件开发。我正在问这个问题,因为我现在只想在LINQPad中快速证明某些内容的概念,而不使用EF实体数据模型向导,以便将来可以轻松地编写这样的代码

2 个答案:

答案 0 :(得分:4)

您只需要在下面的代码中,准备好粘贴到LinqPad

class MyTable
{
    public int Value { get; set; }
}

class MyTableConfiguration : EntityTypeConfiguration<MyTable>
{
    public MyTableConfiguration()
    {
        ToTable("dbo.MyTable");
        HasKey(x => x.Value);
        Property(x => x.Value).HasColumnName("Value").IsRequired();
    }
}

class MyDbContext : DbContext
{
    public IDbSet<MyTable> MyTableSet { get; set; }

    public MyDbContext(string connectionString) : base(connectionString)
    {
    }

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

void Main()
{
    MyDbContext context = new MyDbContext("Data Source=(local);Initial Catalog=SO33426289;Integrated Security=True;");
    Expression<Func<MyTable, bool>> expr = x => x.Value == 42;
    context.MyTableSet.Where(expr).Dump();
}

您需要确保引用EntityFramework NuGet包和System.ComponentModel.Annotations.dll。以下是我使用的命名空间:

System.ComponentModel.DataAnnotations.Schema
System.Data.Entity
System.Data.Entity.ModelConfiguration
System.Data.Entity.ModelConfiguration.Configuration

答案 1 :(得分:0)

  1. 使用EF的EDMX(例如数据公告)来定义映射并创建一个上下文类来访问实体集或使用Create the Data Model(模型优先或数据库优先)创建模型和映射,并为您生成模型和上下文。在线搜索任何入门实体框架指南。
  2. E.g。 Code First(在此页面中搜索Creating the Entity Framework Data Model)或EDMX(在此页面中搜索 using (var context = new YourContext()) { var filteredEntities = context.YourEntities.Where(expression).ToList(); } )。

    1. 像这样:
    2. {{1}}

      但是,您的表格需要PK(主键)才能生效。