簡體   English   中英

在實體框架中為單個表手動創建模型

[英]Manually create model for single table in Entity Framework

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。 然后,如何使用Expression<Func<MyTable, bool>> lambda查詢MyTable ,它決定要返回的行並將其投影到SQL中?

我對EF比較陌生,但對C#或軟件開發卻不熟悉。 我之所以要問這個問題,是因為現在我只想快速證明LINQPad中的某些概念,而無需使用EF實體數據模型向導,因此將來很容易編寫出這樣的代碼。

您需要的只是下面的代碼,可以粘貼到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. code first使用EF的code first (例如,數據注釋)來定義映射,然后創建上下文類來訪問實體集,或者使用EDMX (首先是模型,首先是數據庫)來創建模型和映射,並為之生成模型和上下文。您。 在線搜索有關Entity Framework指南的任何入門。

例如代碼優先 (在此頁面中搜索Create the Data Model )或EDMX (在此頁面中搜索Creating the Entity Framework Data Model )。

  1. 像這樣:

using (var context = new YourContext()) { var filteredEntities = context.YourEntities.Where(expression).ToList(); }

但是,您的表將需要一個PK(主鍵)才能起作用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM