麻烦映射布尔值为是否没有图表

时间:2013-12-27 16:40:11

标签: c# entity-framework entity-framework-6

我正在尝试使用Entity Framework对现有数据库进行概念验证项目。我正在使用通过NuGet检索的6.0.2版本。

为了便于阅读,我们有使用'Y'/'N'来表示数据库中的布尔值的惯例。我seen that thisnow possible with EF 6,但它打破了我的映射。

这是我的上下文代码:

public class MyContext : DbContext {
    public DbSet<Space> Spaces { get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder) {
        modelBuilder.Configurations.Add(new SpaceConfiguration());

        modelBuilder.Properties().Where(p => p.PropertyType == typeof(Boolean)).Configure(p => p.HasColumnType("yes no char as boolean"));
    }
}

我设置了以下集成测试以检查我是否能够连接到数据库:

[TestMethod]
public void TestMethod1() {
    using (var context = new MyContext()) {
        Assert.IsTrue(context.Spaces.Any());
        Assert.IsTrue(context.Spaces.First().IsActive);
    }
}

当我离开上面的Context时,第一个Assert失败,说“Sequence不包含匹配元素”。

如果我从Context注释掉配置,则第二个Assert失败。这一次,我收到一条消息,说“'Space'上的'IsActive'属性无法设置为'System.String'值。您必须将此属性设置为'System.Boolean'类型的非null值。 “

属性Space.IsActive设置为布尔值。有任何想法吗?我已多次查看该配置行以查找拼写错误。

0 个答案:

没有答案