[英]Modify Entity Framework template to include ReSharper value analysis attributes on entity properties
我的實體數據模型包含有關哪些字段可為空和不可為空的信息。 但是,生成的模板不包含此信息。
在代碼的其他地方,我使用JetBrains.Annotations
顯示允許使用空值的地方,以及不允許使用空值的地方。 例如:
[NotNull]
public string Thing([CanBeNull] string s)
{
return s ?? "Was null";
}
如何使Entity Framework生成包含這些值分析屬性的代碼?
我正在通過DbContext
使用Entity Framework 5.0。
在Solution Explorer中 ,在你.edmx
文件會有一個.tt
具有相同的名稱作為您的EDMX文件(而不是文件.Context.tt
一個)。 打開此文件進行編輯。
該文件是用於生成實體類源文件的模板。 我們將修改模板,以在生成的源代碼中包括這些屬性。
在第23行附近,您將看到啟動新文件的代碼。 對其進行修改以發出using
聲明:
fileManager.StartNewFile(entity.Name + ".cs");
#>
using JetBrains.Annotations;
<#
BeginNamespace(code);
然后,在第73行附近,您將看到一個foreach循環,該循環發出屬性代碼。 對其進行修改以使其類似於:
foreach (var edmProperty in simpleProperties)
{
if (edmProperty.TypeUsage.Facets["Nullable"].Value.ToString() == "False")
{
#>
[NotNull]
<#
}
else
{
#>
[CanBeNull]
<#
}
#>
<#=codeStringGenerator.Property(edmProperty)#>
<#
}
保存文件,您的實體.cs
文件將重新生成。 打開它們以檢查它們是否正確編譯。 您可能必須添加對JetBrains.Annotations.dll
的引用,或者在其他保留這些屬性類定義的位置添加引用。
這也將[NotNull]
放在值類型上,這沒有意義,但也不會引起任何問題。 如果有人對支持模板的模型有更多了解,並且可以建議如何進一步改進它,那么我很想聽聽它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.