我有两个班级:
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; }
}
...其中class User
已经是数据库中的现有表。现在,我想将Report
作为表添加到数据库中,为此我计划使用Fluent NHibernate。我正在映射User
和Report
,因为我希望User
类可以访问Report
。 User
和Report
之间存在一对多的关系。
我已经有将SQL脚本导出到数据库的测试,并且User
包含在这些测试中。现在我也想导出由FNH生成的脚本,但我不希望FNH生成User
,因为它已经存在于数据库中。
因此,我可以在SchemaAction.None()
的映射中指定User
。这使得FNH不会为User
生成脚本,仅适用于Result
。唯一的问题是,表Report
中没有生成外键。如何使FNH不为User
导出生成的脚本,但仍导出表Report
的外键?
如果我没有指定SchemaAction,则会创建表User
和Report
,并生成Report
中的外键。
答案 0 :(得分:1)
使用此代码将更新脚本写入文件
using (var file = new StreamWriter("SchemaUpdateScript.txt"))
{
new SchemaUpdate(config).Execute(file.WriteLine, false);
}
仔细检查更新脚本是否真正符合您的要求
第1点是可选的。我强烈反对在生产环境中直接使用SchemaUpdate。