C# 实体框架:在模型类中创建不带属性的数据库列
是否可以通过fluent mapping API告诉实体框架在模型类中没有相应属性的情况下向特定表添加列C# 实体框架:在模型类中创建不带属性的数据库列,c#,.net,entity-framework,C#,.net,Entity Framework,是否可以通过fluent mapping API告诉实体框架在模型类中没有相应属性的情况下向特定表添加列 是的,我可以通过在迁移中执行SQL脚本来实现这一点,但我更希望在模型配置中指定,而不是在迁移中指定 我一直在研究这个问题,不可否认是为了解决在EF core发布之前没有本机值对象(复杂属性)处理的问题 是一种指定从该上下文生成的迁移应向数据库添加列的方法。具体参见我的示例: // In DbContext-inheriting class: protected override void O
是的,我可以通过在迁移中执行SQL脚本来实现这一点,但我更希望在模型配置中指定,而不是在迁移中指定 我一直在研究这个问题,不可否认是为了解决在EF core发布之前没有本机值对象(复杂属性)处理的问题 是一种指定从该上下文生成的迁移应向数据库添加列的方法。具体参见我的示例:
// In DbContext-inheriting class:
protected override void OnModelCreating(ModelBuilder builder)
{
// Ignore the model property that holds my valueobject -
// (a complex type encapsulating geolocation latitude/longitude)
var entityBuilder = builder.Entity<Item>()
.Ignore(n => n.Location);
// Add shadow properties that are appended to the table in the DB
entityBuilder.Property<string>("Latitude");
entityBuilder.Property<string>("Longitude");
base.OnModelCreating(builder);
}
//在DbContext继承类中:
模型创建时受保护的覆盖无效(ModelBuilder)
{
//忽略保存我的valueobject的模型属性-
//(封装地理位置纬度/经度的复杂类型)
var entityBuilder=builder.Entity()
.忽略(n=>n.位置);
//添加附加到数据库表中的阴影属性
entityBuilder.Property(“纬度”);
entityBuilder.Property(“经度”);
基于模型创建(生成器);
}
这将生成迁移表创建语句,如下所示:
migrationBuilder.CreateTable(
name: "Items",
columns: table => new
{
Key = table.Column<string>(nullable: false),
Latitude = table.Column<double>(nullable: false),
Longitude = table.Column<double>(nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_Items", x => x.Key);
});
migrationBuilder.CreateTable(
名称:“物品”,
列:表=>new
{
Key=table.Column(可空:false),
纬度=表列(可空:false),
经度=table.Column(可空:false)
},
约束:表=>
{
表.PrimaryKey(“主键项”,x=>x.Key);
});
EF Core解决方案的EF?+1版本是哪一个,但我无法接受您的答案,因为我正在寻找EF 6.1.3的解决方案。不过,谢谢你发布这个-我一定会在切换到EF Core时使用这个。