Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 实体框架:在模型类中创建不带属性的数据库列_C#_.net_Entity Framework - Fatal编程技术网

C# 实体框架:在模型类中创建不带属性的数据库列

C# 实体框架:在模型类中创建不带属性的数据库列,c#,.net,entity-framework,C#,.net,Entity Framework,是否可以通过fluent mapping API告诉实体框架在模型类中没有相应属性的情况下向特定表添加列 是的,我可以通过在迁移中执行SQL脚本来实现这一点,但我更希望在模型配置中指定,而不是在迁移中指定 我一直在研究这个问题,不可否认是为了解决在EF core发布之前没有本机值对象(复杂属性)处理的问题 是一种指定从该上下文生成的迁移应向数据库添加列的方法。具体参见我的示例: // In DbContext-inheriting class: protected override void O

是否可以通过fluent mapping API告诉实体框架在模型类中没有相应属性的情况下向特定表添加列


是的,我可以通过在迁移中执行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时使用这个。