我最近asked a question关于在.NET 4中使用Fluent NHibernate - 我解决了这个问题,但遇到了一个新问题。
摘要
我的主要问题(目前)是配置数据库。我正在关注this guide,但试图反对SQL Server 2008 Express,因为这就是我将要使用的内容,因此我需要学习。
失败的代码:
public static ISessionFactory CreateSessionFactory()
{
return Fluently.Configure()
.Database(MsSqlConfiguration.MsSql2008.ConnectionString(c => c.FromConnectionStringWithKey("mssql")))
.Mappings(m => m.FluentMappings.AddFromAssemblyOf<Program>())
.ExposeConfiguration(cfg => new SchemaExport(cfg).Create(true, true))
.BuildSessionFactory();
}
当我尝试运行我的应用程序时,我在最后一行(.BuildSessionFactory()
)上得到以下异常:
覆盖成员时违反了继承安全规则:'FluentNHibernate.Cfg.FluentConfigurationException.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)'。覆盖方法的安全性可访问性必须与被覆盖的方法的安全性可访问性相匹配。
造成这种情况的原因是什么?
答案 0 :(得分:8)
需要安全属性 重新应用于派生自的类型 其他类型也有安全性 属性。
可能FluentConfigurationException
需要将[SecurityPermission]
属性应用于其GetObjectData()
方法。
否则请查看this blog post。
编辑:final solution正在向FluentConfigurationException.GetObjectData()
添加[SecurityCritical]