【问题标题】:How to update data model class after manually changing .dbml file手动更改 .dbml 文件后如何更新数据模型类
【发布时间】:2010-10-14 12:55:42
【问题描述】:

有谁知道我在 .dbml 文件中进行一些自定义更改后如何更新数据模型类。

我尝试在 .dbml 中手动将某些字段标记为可为空,但无论我重建多少次,代码中都看不到更改。我什至尝试在外部工具中编辑.dbml(xml),然后保存,但没有用。

编辑

<Table Name="dbo.Clients_Banks" Member="Clients_Banks">
<Type Name="Clients_Banks">
  <Column Name="ID" Type="System.Int32" DbType="Int NOT NULL IDENTITY" IsPrimaryKey="true" IsDbGenerated="true" CanBeNull="false" />
  <Column Name="FKClients" Type="System.Int32" DbType="Int NOT NULL" CanBeNull="false" />
  <Column Name="BankName" Type="System.String" DbType="NVarChar(100) NOT NULL" CanBeNull="false" />
  <Column Name="BankAccountNo" Type="System.String" DbType="NVarChar(50) NOT NULL" CanBeNull="false" />
  <Column Name="Party" Type="System.String" DbType="NVarChar(50)" CanBeNull="true" />
  <Column Name="ClientAccountNo" Type="System.String" DbType="NVarChar(50) NOT NULL" CanBeNull="false" />
  <Column Name="Active" Type="System.Boolean" DbType="Bit NOT NULL" CanBeNull="false" />
  <Column Name="NonResidentialAccount" Type="System.Boolean" CanBeNull="false" />
  <Column Name="Swift" Type="System.String" CanBeNull="true" />
  <Column Name="Iban" Type="System.String" CanBeNull="true" />
  <Association Name="Clients_Clients_Banks" Member="Clients" ThisKey="FKClients" OtherKey="ID" Type="Clients" IsForeignKey="true" />
</Type>

我刚刚将最后两个成员(Iban 和 Swift)的 CanBeNull 属性从 false 更改为 true。没什么大不了的,但我需要这样做。

【问题讨论】:

  • 能把你修改的dbml XML的sn-p包括进去吗?
  • 我不得不将 sn-p 放到原始问题文本中,因为它不适合评论的字符数限制
  • 对不起,我还应该要求生成代码的 sn-p - 就像属性 Swift 和 Iban 的前几行一样。无论如何,我会继续回答,如果您愿意,我们可以继续讨论。

标签: c# sql visual-studio linq-to-sql


【解决方案1】:

好的,当您在实体设计器中选择了 Swift 或 Iban 字段时,我假设您已经在 Visual Studio 的“属性”窗口中将 Nullable 设置为 True ,然后您已保存以重新生成 .Designer.cs 文件。如果是这样(听起来你正在这样做......),这就是你应该看到的:

将 Nullable 设置为 True

<Column Member="Swift" Storage="_Swift" Type="System.String" CanBeNull="true" UpdateCheck="Always" />

应该生成这个:

[Column(Storage="_Swift")]
public string Swift
{
...

将 Nullable 设置为 False

<Column Member="Swift" Storage="_Swift" Type="System.String" CanBeNull="false" UpdateCheck="Always" />

应该生成这个:

[Column(Storage="_Swift", CanBeNull=false)]
public string Swift
{
...

如你所见,String默认可以为空,所以当Nullable设置为True时,Column属性中不需要CanBeNull属性。

无论如何,如果以上内容没有提供更多线索,您可能需要提供您生成的代码的 sn-p(正如我在对您问题的评论中提到的那样)。希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-08-20
    • 2012-08-20
    • 1970-01-01
    • 1970-01-01
    • 2015-01-19
    • 2013-10-06
    • 1970-01-01
    • 2011-12-05
    相关资源
    最近更新 更多