POST編輯 - 見下文流利Automapper問題與標籤創建
編輯我有一個流暢的自動映射其作爲夏普架構的一部分查詢。運行其中一個測試用例將生成一個模式,我可以使用它在我的數據庫中創建表。
我正在開發一個帖子,以及與這些帖子相關的標籤。我希望標籤能夠與多個帖子相關聯,並且每個帖子都有0個或多個標籤。
我想實現的DB模式:
郵政{ID,標題,SubmitTime,內容}
標籤{ID,名稱}
PostTag {帖子ID,標籤識別}
相反,我得到:
發表的內容{Id,Title,SubmitTime,Content}
標記{ID,名稱,帖子ID(FK)}
我用鋒利的架構,並可類如下所示(或多或少):
public class Post : Entity
{
[DomainSignature]
private DateTime _submittime;
[DomainSignature]
private String _posttitle;
private IList<Tag> _taglist;
private String _content;
public Post() { }
public Post(String postTitle)
{
_submittime = DateTime.Now;
_posttitle = postTitle;
this._taglist = new List<Tag>();
}
public virtual DateTime SubmitTime { get { return _submittime; } private set { _submittime = value; } }
public virtual string PostTitle { get { return _posttitle; } private set { _posttitle = value; } }
public virtual string Content { get { return _content; } set { _content = value; } }
public virtual IList<Tag> TagList { get { return _taglist; } set { _taglist = value; } }
public class Tag : Entity
{
[DomainSignature]
private String _name;
public Tag() { }
public Tag(String name)
{
this._name = name;
}
public virtual String Name
{
get { return _name; }
private set { _name = value; }
}
public virtual void EditTagName(String name)
{
this.Name = name;
}
}
我可以看到它爲什麼走了建立它的數據庫模式,因爲有時候對象只能作爲另一部分存在。但標籤可以單獨存在。
我該如何去實現這一目標?我對MVC,Nhibernate和SHarp架構等都很陌生,所以任何幫助都會非常感謝!
編輯 *
OK,我現在已經稍微調整我的班。我的問題是我期待推斷中間表。相反,我意識到我必須創造它。 所以我現在(我已經簡化了類稍有提高可讀性的緣故:
class Post : Entity
{
[DomainSignature]
String Title
[DomainSignature]
DateTime SubmitTime
IList<PostTag> tagList
}
class Tag : Entity
{
[DomainSignature]
string name
}
class PostTag : Entity
{
[DomainSignature]
Post post
[DomainSignature]
Tag tag
}
這讓我對與通常的郵政和變量表沿着中間實體的模式:
PostTag{id, name, PostId(FK)}
上面的問題是,它仍然不包含Tag的外鍵,而且它應該真的有一個ID列,因爲它是一個關係表?我認爲它應該是一個組合鍵,它由來自Post和Tag表格的PK。
我敢肯定,通過向Tag類
IList<PostTag> postList
我會得到另一個FK加入PostTag模式,但我不想添加上面,作爲postList可能是巨大的。我不需要每次向系統中添加帖子。我會有一個單獨的查詢來計算這種信息。
任何人都可以幫我解決這最後一部分?謝謝你的時間。