gpt4 book ai didi

c# - 根据实体类型覆盖 EF 6 中的默认 SQL 生成

转载 作者:太空宇宙 更新时间:2023-11-03 12:14:01 25 4
gpt4 key购买 nike

有一个典型的实体类

public class MyTable {
public Guid Id {get;set;}
public string Name {get;set;}
}

EF 生成如下内容:

    CreateTable(
"dbo.MyTable",
c => new
{
Id = c.Guid(nullable: false),
Name = c.String(nullable: false, maxLength: 128),
})
.PrimaryKey(t => t.Id)

我想从接口(interface) IMyInterface 继承我的一些实体类:

public interface IMyEnterface {}

然后我想覆盖默认生成,以便迁移任何类实现 IMyInterface 自动看起来像这样:

    CreateTable(
"dbo.MyTable",
c => new
{
Id = c.Guid(nullable: false),
Name = c.String(nullable: false, maxLength: 128),
})
.PrimaryKey(t => t.Id)

Sql(@"EXEC sys.sp_addextendedproperty bla-bla-bla");

EF 6.2 中是否有任何扩展点允许这样做?

最佳答案

Seed 方法中更容易做到这一点:

var tables = context.GetType().GetProperties()
.Where(x =>
x.PropertyType.GenericTypeArguments
.Any(y => typeof(IMyEnterface).IsAssignableFrom(y))
);

foreach (var table in tables)
if(sp_NotExecutedYet(table))
context.Database
.ExecuteSqlCommand($"EXEC sys.sp_addextendedproperty {propertyNameFor(table)}");

关于c# - 根据实体类型覆盖 EF 6 中的默认 SQL 生成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50600140/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com