2011-05-31 71 views

回答

5

只需使用一个受保护的默认构造函数:

public class Product 
{ 
    protected Product() { } 

    public Product(Category category) 
    { 
     this.Category = category; 
    } 
} 
+0

但我认为它不会对其保护级别的nhibernate访问?我不是吗? – Adrakadabra 2011-06-01 04:09:47

+0

即使受保护,NHibernate仍然可以访问它。这也适用于属性。 – 2011-06-01 08:48:14

+0

您可以将[Obsolete]保护添加到nullary构造函数中,以确保手写代码不会使用它。这实际上与私人相同。 – 2013-03-07 10:31:18

5

“NHibernate允许值对象的私有默认构造函数,但对于实体,您将需要默认的公共或受保护的构造函数,因为私有是不够的。”

在这里你能找到的东西:

https://github.com/davybrion/companysite-dotnet/blob/master/content/blog/2009-10-why-nhibernate-entities-need-a-public-or-protected-parameterless-constructor.md

这里有一个实验,而不必构造工作:

http://kozmic.net/2011/03/20/working-with-nhibernate-without-default-constructors/

这与依赖注入工作的例子:

http://nhibernate.info/blog/2008/12/12/entities-behavior-injection.html

+0

我只是用乌尔建议,但这个错误将提高:Castle.DynamicProxy.DefaultProxyBuilder“同时存在于” D:\ WebProjects \ Azarakhsh.Web \第三方\城堡。 Core.dll'和'd:\ WebProjects \ Azarakhsh.Web \ ThirdParty \ Castle.DynamicProxy2.dll – Adrakadabra 2011-06-01 05:00:58

+0

我认为你必须发布你的代码! – danyolgiax 2011-06-03 04:25:12

+0

我完全使用http://devlicio.us/blogs/krzysztof_kozmic/archive/2011/03/20/working-with-nhibernate-without-default-constructors.aspx ,,我不知道是否因为城堡dll? – Adrakadabra 2011-06-06 03:48:49

相关问题