Najpierw dodaj dokumentację do wygenerowanego kodu w modelu szkieletowym encji
Korzystam z modelu Entity Framework od czasu VS 2010. Kiedy tworzę projekt, EF generuje plik Model.Designer.cs zawierający wszystkie elementy. Ten plik projektanta zawiera również dokumentację dodaną do elementów w pliku EDMX.
Kiedy stworzyłem nowy projekt pierwszego modelu EF w VS 2012, plik Model.tt jest dodawany do mojego pliku EDMX. Ten szablon T4 generuje pojedynczy plik dla każdej jednostki w moim modelu. Niestety, dokumentacja z pliku EDMX nie jest używana w wygenerowanym kodzie.
Naprawdę lubię dokumentować mój model, więc przy jego użyciu pojawia się IntelliSense. Jedyne obejście, jakie do tej pory znalazłem, to usunięcie Model.tt i wygenerowanych plików klas i ponowne włączenie generowania kodu na moim pliku EDMX. Powraca to do zachowania, którego używam z VS 2010. Jednak wolałbym mieć osobny plik na podmiot.
Czy jest jakiś sposób (najlepiej przy użyciu narzędzi VS i bez konieczności modyfikowania jakichkolwiek plików dostarczanych z VS) na dołączenie dokumentacji z pliku EDMX do wygenerowanych plików pojedynczej klasy?
Edytuj: Aby dokładniej zilustrować mój problem, oto krótki przykład.
Powiedzmy, że mój model wygląda tak:
Zaznaczyłem część, w której wprowadziłem dokumentację w oknie Właściwości właściwości Id.
Tak wygląda obiekt w pliku EDMX:
<EntityType Name="Entity1">
<Key>
<PropertyRef Name="Id" />
</Key>
<Property Type="Int32" Name="Id" Nullable="false" annotation:StoreGeneratedPattern="Identity" >
<Documentation>
<Summary>This is documentation for the ID property.</Summary>
</Documentation>
</Property>
</EntityType>
Wygenerowana klasa (Entity1.cs) według Model.tt wygląda tak:
public partial class Entity1
{
public int Id { get; set; }
}
Ale kiedy włączam generowanie kodu dla mojego modelu, tak wygląda obiekt w Model.Designer.cs:
/// <summary>
/// No Metadata Documentation available.
/// </summary>
[EdmEntityTypeAttribute(NamespaceName="Model1", Name="Entity1")]
[Serializable()]
[DataContractAttribute(IsReference=true)]
public partial class Entity1 : EntityObject
{
#region Factory Method
/// <summary>
/// Create a new Entity1 object.
/// </summary>
/// <param name="id">Initial value of the Id property.</param>
public static Entity1 CreateEntity1(global::System.Int32 id)
{
Entity1 entity1 = new Entity1();
entity1.Id = id;
return entity1;
}
#endregion
#region Simple Properties
/// <summary>
/// This is documentation for the ID property.
/// </summary>
[EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
[DataMemberAttribute()]
public global::System.Int32 Id
{
get
{
return _Id;
}
set
{
if (_Id != value)
{
OnIdChanging(value);
ReportPropertyChanging("Id");
_Id = StructuralObject.SetValidValue(value, "Id");
ReportPropertyChanged("Id");
OnIdChanged();
}
}
}
private global::System.Int32 _Id;
partial void OnIdChanging(global::System.Int32 value);
partial void OnIdChanged();
#endregion
}
Widzisz więc: Model.Designer.cs zawiera mój niestandardowy ciąg dokumentacji „To jest dokumentacja właściwości ID”. podczas gdy Entity1.cs nie. Jednak Model.Designer.cs może być dość duży, jeśli istnieje wiele elementów, a debugowanie do tego pliku jest nieco powolne. Wolałbym mieć kilka małych plików (po jednym na podmiot), ale nadal zachowywać dokumentację z pliku EDMX w wygenerowanym kodzie.