我有一个与此类似的实体:
public class Comment
{
public Comment(string text, DateTime creationDate, string authorEmail)
{
Text = text;
CreationDate = creationDate;
AuthorEmail = authorEmail;
}
public virtual string Text { get; private set; }
public virtual DateTime CreationDate { get; set; }
public virtual string AuthorEmail { get; private set; }
}
我是从Is it OK to call virtual properties from the constructor of a NHibernate entity?
取的我收到警告为“构造函数中的虚拟调用”。
尽管如此,它并没有带来任何实际问题,因为虚拟成员仅为NH代理申报。但是,我想知道是否应该将构造函数方法移动到新的 factory 类,并将新方法声明为
CreateComment(string text, DateTime creationDate, string authorEmail)
在这种情况下,最佳做法是什么?
请注意,目前我的域实体中有4-5个重载的构造函数。以上只是一个例子 谢谢!
答案 0 :(得分:1)
我已经使用FluentNHibernate进行了测试,你可以这样做:
public class Comment
{
private string _text;
private DateTime _creationDate;
private string _authorEmail;
public Comment(string text, DateTime creationDate, string authorEmail)
{
_text = text;
_creationDate = creationDate;
_authorEmail = authorEmail;
}
public virtual string Text
{
get { return _text; }
private set { _text = value; }
}
public virtual DateTime CreationDate
{
get { return _creationDate; }
set { _creationDate = value; }
}
public virtual string AuthorEmail
{
get { return _authorEmail; }
private set { _authorEmail = value; }
}
}
答案 1 :(得分:0)
我更喜欢使用无参数(默认)构造函数并构造如下:
var comment = new Comment {
Text = "Something offensive and political.",
CreationDate = DateTime.Now,
AuthorEmail = "someonestupidwithanopinion17@aol.com"
};
现在问题无关紧要。
答案 2 :(得分:0)