實體框架4.1數據庫第一,在生成的c#類中有一個構造函數,那麼我可以在哪裏做我的部分類自定義初始化?實體框架4.1部分類初始化
3
A
回答
7
據我瞭解,您的項目中有一個類似Model.edmx的文件,它實際上並不生成任何代碼。然後你有Model.tt,這是EF 4.1實際用來生成代碼的。你可以修改這個Model.tt。因此,如果您想要爲每個生成的實體添加對部分方法OnInitialized()
的調用(從其構造函數中調用),請在Model.tt的代碼中找到構造函數(其第一行應該類似於public <#=code.Escape(entity)#>()
),然後添加來電OnInitialized()
地方到構造並宣佈部分方法:
partial void OnInitialized();
使用運行自定義工具重新生成實體就大功告成了。現在你可以做這樣的事情在你的非生成的代碼:
partial class SomeEntity
{
partial void OnInitialized()
{
// custom initialization code goes here
}
}
我不知道EF 4.1,所以它可能是有一個更好的辦法。
+0
它按預期工作,謝謝! – tahir
0
添加一個基類:
public class CallBase { protected CallBase() { Initialize(); } protected abstract void Initialize(); }
添加局部類實現在另一個文件
public partial class Call: CallBase { protected owerride void Initialize(); { ... } }
的缺點是,所述初始化方法將之前被叫所有收集生物。
相關問題
- 1. 充分利用實體框架(類型初始化除外)
- 2. 實體框架數據初始化
- 3. 實體框架錯誤初始化
- 4. 實體框架4.1原始SQL
- 5. 當POCO實體實體框架中被初始化檢測
- 6. 實體框架4.1代碼優先 - 是否應初始化多個關係ICollections
- 7. 使用代碼第一個實體框架初始化類
- 8. 實體框架4.1和地理類型
- 9. 實體框架4.1 - 在POCO
- 10. 實體框架4.1例外
- 11. 實體框架4.1和SQLite
- 12. 實體框架(4.1)關係
- 13. 實體框架4.1 - 選擇
- 14. 實體框架4.1。從IDS
- 15. 實體框架4.1 - EFTracingProvider
- 16. 部分初始化基類
- 17. 實體框架4.1的實體
- 18. 實體框架部分類按ID /主鍵實例化
- 19. 實體框架數據庫初始化:初始化新的Azure SqlDatabase時超時
- 20. C#實體框架 - 與部分類
- 21. 部分類實體框架的PropertyChanged
- 22. 實體框架中的部分保存4.1
- 23. 實體框架(實體類)序列化
- 24. 實體框架4.1類型和表拆分
- 25. 實體框架4.1時,我實現
- 26. 初始化實體框架上下文的最佳方法?
- 27. C#實體框架沒有初始化數據庫
- 28. 實體框架花費大量時間初始化模型
- 29. 實體框架虛擬集合初始化
- 30. 實體框架數據庫初始化 - 對於固定列表
我剛試過,生成的類沒有定義構造函數。 (我認爲我使用的是EF 4.0) – svick
yes在4.0中可以,因此我創建了自己的構造函數,但是在4.1中,嵌套類型的類將創建一個構造函數來初始化嵌套字段 – tahir
不生成構造函數調用一些你可以實現的「partial」方法? – svick