0

我有两节课:

public class User
{
  public virtual int Id { get; set; }
  public virtual string Name { get; set; }
}

public class Report
{
  public virtual int Id { get; set; }
  public virtual string Name { get; set; }
  public virtual User User { get; set; }
}

...其中类User已经是数据库中的现有表。现在,我想将Report表添加到数据库中,为此我计划使用 Fluent NHibernate。我正在映射UserReport,因为我希望User可以从Report课堂上访问。User和之间存在一对多的关系Report

我已经有将 SQL 脚本导出到数据库并User包含在其中的测试。现在我还想导出 FNH 生成的脚本,但我不希望 FNH 生成User,因为它已经在数据库中。

因此,我可以SchemaAction.None()在映射中指定User. 这使得 FNH 不会为 生成脚本User,只为Result. 唯一的问题是,表中没有生成外键Report。如何使 FNH 不导出生成的脚本User但仍导出表的外键Report

如果我只是不指定 SchemaAction,则创建表UserReport生成外键Report

4

1 回答 1

1
  1. 将旧/现有模式复制到新数据库中
  2. 使用您的映射和现有数据库创建 NHibernate 配置
  3. 使用此代码将更新脚本写入文件

    using (var file = new StreamWriter("SchemaUpdateScript.txt"))
    {
        new SchemaUpdate(config).Execute(file.WriteLine, false);
    }
    
  4. 仔细检查更新脚本是否真的做了你想要的

第 1 点是可选的。我强烈建议不要在生产环境中直接使用 SchemaUpdate。

于 2013-01-07T09:00:20.103 回答