使用 Entity Framework 手动将 POCO 映射到现有的 Table
Manually map POCO to existing Table using Entity Framework
我有一个现有的数据库 table Movie
。现在我想写一个 POCO Movie.cs
来映射到那个 table。我想部分控制映射,因为我正在尝试了解有关 EF 的更多信息。
Movie
table 有 3 个字段:Title VARCHAR(255,), ReleaseDate DATETIME, Price MONEY
。我的 DbContext - 派生的 class 看起来像什么?
来自 Java/Hibernate 背景,我想我只是将 POCO 中的字段映射到 table 中的列,但在 EntityFramework 中似乎并不那么直接.
我好像只找到这两个选项:
"Code First" -> 用 C# 编写所有内容,然后让 EntityFramework 生成和 运行 迁移以不断更新和播种数据库。
"Database First" -> 创建数据库,然后在 VS 中创建一个数据库项目并生成一个 EDMX 文件,该文件为您生成 POCO
对于将单个 POCO 映射到单个 table 的目标而言,两者似乎都过于迟钝。我错过了什么?我听说过 "Fluent API," 但这似乎让我回到了 1. 或 2.
我努力在描述我正在寻找的内容的文档中找到任何一致的内容。
你还有另一个选择。您可以编写 POCO class、映射 class 并禁用迁移(迁移还涉及一个名为 __MigrationHistory 的元数据 table,您的数据库中没有)。
class可以(使用属性映射字段,也可以使用fluent interface)
class Movie {
[PrimaryKey]
[MaxLength(255)
public string Title {get; set;}
public datetime ReleaseDate {get; set;}
public float Price {get; set;} // Or the type you prefere
}
为了禁用迁移和模型检查,我通常将其设置在上下文 class(即 MyContext class)中。
class MyContext : DbContext {
static MyContext()
{
System.Data.Entity.Database.SetInitializer<CloseUpContext>(null); // This disables model checking
}
public DbSet<Movie> Movies {get; set;}
}
一个有趣的功能是来自数据库的 CodeFirst。 EF 从数据库开始生成 POCO classes。 类 经常需要重构,但仍然比从头开始编写 class 更好。
我有一个现有的数据库 table Movie
。现在我想写一个 POCO Movie.cs
来映射到那个 table。我想部分控制映射,因为我正在尝试了解有关 EF 的更多信息。
Movie
table 有 3 个字段:Title VARCHAR(255,), ReleaseDate DATETIME, Price MONEY
。我的 DbContext - 派生的 class 看起来像什么?
来自 Java/Hibernate 背景,我想我只是将 POCO 中的字段映射到 table 中的列,但在 EntityFramework 中似乎并不那么直接.
我好像只找到这两个选项:
"Code First" -> 用 C# 编写所有内容,然后让 EntityFramework 生成和 运行 迁移以不断更新和播种数据库。
"Database First" -> 创建数据库,然后在 VS 中创建一个数据库项目并生成一个 EDMX 文件,该文件为您生成 POCO
对于将单个 POCO 映射到单个 table 的目标而言,两者似乎都过于迟钝。我错过了什么?我听说过 "Fluent API," 但这似乎让我回到了 1. 或 2.
我努力在描述我正在寻找的内容的文档中找到任何一致的内容。
你还有另一个选择。您可以编写 POCO class、映射 class 并禁用迁移(迁移还涉及一个名为 __MigrationHistory 的元数据 table,您的数据库中没有)。
class可以(使用属性映射字段,也可以使用fluent interface)
class Movie {
[PrimaryKey]
[MaxLength(255)
public string Title {get; set;}
public datetime ReleaseDate {get; set;}
public float Price {get; set;} // Or the type you prefere
}
为了禁用迁移和模型检查,我通常将其设置在上下文 class(即 MyContext class)中。
class MyContext : DbContext {
static MyContext()
{
System.Data.Entity.Database.SetInitializer<CloseUpContext>(null); // This disables model checking
}
public DbSet<Movie> Movies {get; set;}
}
一个有趣的功能是来自数据库的 CodeFirst。 EF 从数据库开始生成 POCO classes。 类 经常需要重构,但仍然比从头开始编写 class 更好。