Fluent NHibernate和.NET 4的奇怪覆盖问题

时间:2009-12-17 21:46:44

标签: nhibernate fluent-nhibernate .net-4.0

我最近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)'。覆盖方法的安全性可访问性必须与被覆盖的方法的安全性可访问性相匹配。

造成这种情况的原因是什么?

1 个答案:

答案 0 :(得分:8)

来自Microsoft Connect issue

  

需要安全属性   重新应用于派生自的类型   其他类型也有安全性   属性。

可能FluentConfigurationException需要将[SecurityPermission]属性应用于其GetObjectData()方法。

否则请查看this blog post

编辑final solution正在向FluentConfigurationException.GetObjectData()添加[SecurityCritical]