1

我正在处理一个遗留数据库,我们有一个不再有意义的字段,但我宁愿不更改数据库模式。

我正在尝试将旧的 DB 文本字段映射到一个带有布尔值的类(只需要知道 DB 文本字段具有的一个选项)。我可以使用 Forumla 从数据库中获取布尔值,但我似乎可以将任何更新保存回数据库。

我的班级和当前的流利映射是:

public class Bulletin
{
    public virtual int Id { get; set;}
    public virtual bool RegularBulletin { get; set;}
}

public class BulletinMapping : ClassMap<Bulletin>
{
    public BulletinMapping()
    {
        Table("Bulletins");
        Id(x => x.Id, "ID").GeneratedBy.Identity();

        Map(x => x.RegularBulletin)
            .Formula("case when EmailType = 'BULLETIN_B' then 1 else null end")
            .Nullable();
    }
}

有没有人对如何保留 RegularBulletin 字段有任何想法?

谢谢桑

4

1 回答 1

3

我会为此使用一种解决方法 - 创建一个支持字段protected virtual string RegularBulletinString并在其上使用您的布尔转换公式。

public class Bulletin
{
    public virtual int Id { get; set;}
    protected virtual string RegularBulletinString { get; set;}
    public virtual bool RegularBulletin 
    { 
       get
       {
          return RegularBulletinString == "BULLETIN_B";
       } 
       set
       {
          RegularBulletinString = value? "BULLETIN_B" : null;
       }
    }
}

public class BulletinMapping : ClassMap<Bulletin>
{
    public BulletinMapping()
    {
        Table("Bulletins");
        Id(x => x.Id, "ID").GeneratedBy.Identity();

        Map(x => x.RegularBulletinString)
            .Column("EmailType")
            .Nullable();
        IgnoreProperty(x=> x.RegularBulletin); 

    }
}
于 2011-08-26T15:24:05.573 回答