當我目前工作的一個項目,並選擇使用哈瓦那爲我的ORM是強制性的。我正在使用SmoothHabanero來設置我的業務對象。我與另一個需要至少有一個對象實例有效的類有關係。我將如何做到這一點?我怎麼能強制執行的關係用SmoothHabanero
2
A
回答
1
OK,這可能是有點詳細所以讓我先從一些基本知識。
平滑是哈瓦那ORM守則第一個社區項目。 Smooth基於Convention over Configuration方法。
你哈瓦那域對象不需要有一個外鍵屬性爲它正確地映射到只要你遵循某種公約的那光滑的可以找出數據庫。
通常
public class Customer : BusinessObject
{
}
public class SalesOrder : BusinessObject
{
/// <summary>
/// The type this SalesOrder is for.
/// </summary>
public virtual Customer Customer
{
get { return Relationships.GetRelatedObject<Customer>("Customer"); }
set { Relationships.SetRelatedObject("Customer", value); }
}
}
在這種情況下銷售訂單有一個客戶的單一關係。 客戶對銷售訂單是強制性的,即如果沒有設置客戶,銷售訂單就不能持續。
在域級別這一切是有道理的。 但是,在數據庫級別,使用SalesOrder表上的外鍵映射客戶關係。 如果您遵循CustomerID是SalesOrder表上的外鍵屬性的約定,那麼這就是您需要做的所有操作以獲取在域模型中設置的關係並正確映射到數據庫。
現在的回答你的問題。
如果Classes是根據上述定義的,那麼您只需添加'[AutoMapCompulsory]'屬性,Smooth將按照您的強制要求設置關係及其外鍵的所有必要設置。
public class Customer : BusinessObject
{
}
public class SalesOrder : BusinessObject
{
/// <summary>
/// The type this SalesOrder is for.
/// </summary>
[AutoMapCompulsory]
public virtual Customer Customer
{
get { return Relationships.GetRelatedObject<Customer>("Customer"); }
set { Relationships.SetRelatedObject("Customer", value); }
}
}
希望這有助於 佈雷特
相關問題
- 1. SQL強制執行1:1關係
- 2. 我怎麼能強迫3960
- 3. 我怎麼能執行這個MySQL partitoning?
- 4. 我怎麼能從服務執行
- 5. 我怎麼能強制Internet Explorer以應用CSS樣式
- 6. Laravel:強制執行一對一的關係
- 7. 在rails關係數據庫中創建並強制執行has_one關係
- 8. 強制執行
- 9. 強制執行
- 10. 強制執行
- 11. 我怎麼強制轉換cvseq到cvpoint
- 12. 怎麼可能是主鍵和關係
- 13. 我怎麼能執行所有行中的JavaScript
- 14. 我怎麼能在我的控制器
- 15. Laravel:我怎麼能遍歷一個ORM的領域和關係
- 16. 在bash中,我怎麼能強制打印到終端
- 17. 我怎麼能強制執行的文件類型的上傳與AWS S3鬥政策
- 18. 怎麼能我秀每行
- 19. 我怎麼能限制centos用戶
- 20. 我怎麼能執行一個JOIN上使用JOIN-ED表?
- 21. 強制執行IQueryable?
- 22. 強制OnApplyTemplate執行
- 23. neo4j nodejs強度或屬性的關係修改:怎麼做?
- 24. 使用lodash /強調我怎麼可以更新的關鍵
- 25. 強制CodeIgniter執行鉤子功能?
- 26. 我怎麼能執行一個明確的一個DIV的
- 27. Neo4J:強制關係約束
- 28. gnuplot - 我怎麼能滯後一系列?
- 29. 我怎麼能這一輪系列
- 30. 我怎麼能在android系統
@Brett - 感謝這正是我之後。 – Andrew 2011-04-18 11:01:57