既存のデータベースに既存のasp.netメンバシップとロールテーブルがあり、Fluent Nhibernateでそれらを新しいエンティティにマッピングしています。Fluent Nhibernateスキーマから一部のテーブルを除外する
また、Fluent Nhibernateから直接スキーマを生成し、生成されたSQLスクリプトを手動で微調整して既存のテーブルを除外します。
Fluent Nhibernateに、特定のテーブルの生成を除外することはできますか?
既存のデータベースに既存のasp.netメンバシップとロールテーブルがあり、Fluent Nhibernateでそれらを新しいエンティティにマッピングしています。Fluent Nhibernateスキーマから一部のテーブルを除外する
また、Fluent Nhibernateから直接スキーマを生成し、生成されたSQLスクリプトを手動で微調整して既存のテーブルを除外します。
Fluent Nhibernateに、特定のテーブルの生成を除外することはできますか?
SchemaAction.None()
あなたのClassMapに。
別のオプションは、属性を作成することです、
public class DoNotAutoPersistAttribute : Attribute
{
}
はその後AutoPersistenceModelGeneratorにあなたがAddEntityAssemblyのWHERE句で、この属性をチェックすることができ言います。
私は属性+大会でこれを管理している:私はSchemaAction列挙を参照してください、しかし、どこ私は私のクラスマップに入れない
public enum SchemaAction
{
None
}
[Serializable]
[AttributeUsage(AttributeTargets.Class)]
public class SchemaActionAttribute : Attribute
{
private readonly SchemaAction schemaAction = SchemaAction.None;
public SchemaActionAttribute()
{
}
public SchemaActionAttribute(SchemaAction schemaAction)
{
this.schemaAction = schemaAction;
}
public SchemaAction GetSchemaAction()
{
return schemaAction;
}
}
/// <summary>
/// overrides the default action for entities when creating/updating the schema
/// based on the class having a Schema attribute (<see cref="SchemaActionAttribute" />)
/// </summary>
public class SchemaActionConvention : IClassConvention
{
public void Apply(IClassInstance instance)
{
object[] attributes = instance.EntityType.GetCustomAttributes(true);
foreach (object t in attributes)
{
if (t is SchemaActionAttribute)
{
var a = (SchemaActionAttribute) t;
switch(a.GetSchemaAction())
{
case SchemaAction.None:
instance.SchemaAction.None();
return;
default: throw new ApplicationException("That schema action:" + a.GetSchemaAction().ToString() + " is not currently implemented.");
}
}
}
}
}
...
[SchemaAction(SchemaAction.None)]
public class TextItem : Entity
...
? SchemaAction.None()を挿入するだけです。動かない。 – Ronnie
マッピングオーバーライドでは使用できません。 –