gpt4 book ai didi

c# - 如何检查 EntityTypeConfiguration 实例的成员配置?

转载 作者:行者123 更新时间:2023-11-30 17:52:17 25 4
gpt4 key购买 nike

我使用 Entity Framework Code First 和从 EntityTypeConfiguration 继承的映射类。我这样做是为了封装我使用 Code First fluent API 来配置实体。

我希望能够检查这些类中的配置设置,以便我可以在我的集成测试中应用其中的一些。我正在使用 AutoFixture 快速创建实体,最终我想找出一种方法来进行一些自定义,这些自定义使用我的 EntityTypeConfiguration 类中的配置。

但首先,我需要弄清楚如何将它们拉出来......

这是一个用例示例:

public class Widget { public string Name { get; set; } }
public class WidgetMap : EntityTypeConfiguration<Widget> {
this.Property(w => w.Name).HasMaxLength(10);
}

我如何做类似这个伪代码的事情:

public Widget GetWidgetHonoringStringLengthConstraints(WidgetMap map) {
var w = new Widget();
int maxLength = map.GetProperty(p => p.Name).GetMaxLength(); //MAGIC
string name = new Guid().SubString(0, maxLength);
w.Name = name;
return w;
}

最佳答案

我在 Entity Framework Codeplex Discussions 中收到了 Arthur Vickers 的回复.

基本上,他告诉我我找错了树,因为按照设计,他们不希望从正常的公共(public)表面检查配置类——想法是它会污染 API 并尝试找到类似字符串的最大长度的东西通常会告诉你这个故事,但不是整个故事(最终的最大长度限制可能来自几个约定,包括默认设置),这可能并不总是给你答案你真的很追求。

他建议在构建后通过 MetadataWorkspace 从模型中获取元数据可以这样访问:

((IObjectContextAdapter)myDbContext).ObjectContext.MetadataWorkspace

我还没有继续实现这个,但我会把它标记为答案,直到有人提交另一个答案(在我开始之前的一个例子,或者其他选项)。

关于c# - 如何检查 EntityTypeConfiguration<T> 实例的成员配置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18518835/

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