我有一個現有的SQL數據庫,其中所有表都有一個ID列作爲主鍵。我可以從這個數據庫生成實體框架模型,並確保所有生成的類型都繼承自定義ID屬性的接口嗎?我可以從數據庫生成EF模型並讓所有模型實現一個接口嗎?
基本上,我想,我從數據庫返回的一切來實現這一點:
public interface IDatabaseTable
{
public int ID { get; set; }
}
我有一個現有的SQL數據庫,其中所有表都有一個ID列作爲主鍵。我可以從這個數據庫生成實體框架模型,並確保所有生成的類型都繼承自定義ID屬性的接口嗎?我可以從數據庫生成EF模型並讓所有模型實現一個接口嗎?
基本上,我想,我從數據庫返回的一切來實現這一點:
public interface IDatabaseTable
{
public int ID { get; set; }
}
我希望你用的EntityFramework 4如果是的話,你需要使用T4模板生成你的實體和數據的情況下,你可能下載從這裏
http://visualstudiogallery.msdn.microsoft.com/23df0450-5677-4926-96cc-173d02752313
當你得到它的設置比你需要修改T4模板來生成繼承。
所以你會得到兩個tamplates一個模板正在生成數據上下文,另一個正在生成實體。
您需要修改第二個(實體生成模板),去線的實體.TT文件的41有添加繼承這樣的:
<#=Accessibility.ForType(entity)#> <#=code.SpaceAfter(code.AbstractOption(entity))#>partial class <#=code.Escape(entity)#><#=code.StringBefore(" : ", code.Escape(entity.BaseType))#> : IDatabaseTable
在T4 POCO tamplates一些細節你可能會發現這裏
http://sharedtolearn.blogspot.com/2010/06/entity-framework-40-and-t4-templates-to.html
見this MSDN page關於部分類。
總之,您可以爲您的EF實體創建一個部分類並實現您想要的任何接口。
下面是從MSDN頁的文檔:
從所有的部分類型定義合併以下:
XML comments
interfaces
generic-type parameter attributes
class attributes
members
例如,請考慮以下聲明:
partial class Earth : Planet, IRotate { }
partial class Earth : IRevolve { }
它們相當於以下聲明:
class Earth : Planet, IRotate, IRevolve { }