所以我用大约七个表创建了一个小关系数据库,并且我使用其中一些来制作表单。所以我创建了一个ADO.NET实体数据模型来绘制表单并根据表生成类。现在我想给类属性DisplayNames(使用System.ComponentModel)。表格也变得相当大,而且还有很多DisplayNames。
public partial class ParticularForm
{
public System.Guid ParticularForm1 { get; set; }
public System.Guid GeneralFormFieldsID { get; set; }
#region Particular Form
[DisplayName("What's your name?")]
public string Name { get; set; }
[DisplayName("How many friends do you have?")]
public Nullable<byte> FriendsAmount { get; set; }
// (etc...)
的Ack!所以看起来ADO.NET实体数据模型给其中一个列的名称不正确:&#34; ParticularForm1&#34;应该被称为&#34; ParticularFormID&#34;。所以我进入数据库,重命名&#34; ParticularForm&#34;列到&#34; ParticularFormID&#34;。现在我想更新脚手架Form.tt类中对ParticularForm1
的引用,将名称更改为名称ParticularFormID
。所以这就是我的所作所为:
Update Model from Database
。它不允许我刷新单个表,它会立即刷新所有这些表。然后我保存,现在.edmx模型正确显示&#34; ParticularFormID&#34;柱。但它仍然显示出奇怪的&#34; ParticularForm1&#34;专栏,除此之外,我丢失了100个显示名称。 所以我撤消了TFS中的待定更改,我采用了一种新的方法。
public partial class ParticularForm
{
public System.Guid ParticularFormID { get; set; }
我回到了Form.tt&gt; ParticularForm.cs并将属性的名称从ParticularForm1更改为ParticularFormID。然后我回到Designer并保存更改。我收到了消息:
This file has been modified outside of the source editor. Do you want to reload it?
不确定。然后我再次获得除了我更改的唯一一个表。每次单击No
时,都不会进行任何更改,但TFS仍然说有待更改。当我单击Yes
for ParticularForm.cs时,其所有DisplayNames都将被删除 ,并且.cs文件将恢复为ADO.NET选择的先前命名约定,并取消我的更改
我希望保留我已经完成的与DisplayNames相关的工作,但更改单个列名而不会丢失我的所有工作。关于发生了什么的任何想法?为什么ADO.NET实体数据模型不尊重我?
答案 0 :(得分:0)
答案结果是应该hold the data annotations in a MetadataType class。不仅仅是[DisplayName()]
,还有一切。
我的部分问题是我没有读到这个:
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated from a template.
//
// Manual changes to this file may cause unexpected behavior in your application.
// **Manual changes to this file will be overwritten if the code is regenerated.**
// </auto-generated>
//------------------------------------------------------------------------------