簡體   English   中英

實體框架4.1部分類初始化

[英]entity framework 4.1 partial class initialisation

在實體Framework 4.1數據庫中,首先在生成的c#類中有一個構造函數,那么我在哪里可以進行部分類自定義初始化?

據我所知,你的項目中有一個像Model.edmx這樣的文件實際上並沒有生成任何代碼。 然后你有Model.tt,這是EF 4.1實際用來生成代碼的。 你可以修改這個Model.tt。 所以,如果你想將部分方法OnInitialized()的調用添加到每個生成的實體(從它們的構造函數調用),請在Model.tt的代碼中找到構造函數(它的第一行應該看起來像public <#=code.Escape(entity)#>() ),將OnInitialized()的調用添加到構造函數中並聲明partial方法:

partial void OnInitialized();

使用“運行自定義工具”重新生成實體,您就完成了。 您現在可以在非生成代碼中執行以下操作:

partial class SomeEntity
{
    partial void OnInitialized()
    {
        // custom initialization code goes here
    }
}

我不知道EF 4.1,所以有可能有更好的方法。

  1. 添加基類:

      public class CallBase { protected CallBase() { Initialize(); } protected abstract void Initialize(); } 
  2. 在另一個文件中添加部分類實現

      public partial class Call: CallBase { protected owerride void Initialize(); { ... } } 

缺點是初始化方法將在所有收集生物之前調用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM