System.Data.Linq.Mapping修改类标记为[Table]

时间:2014-07-18 15:28:13

标签: c# sql linq

我是LINQ to SQL的初学者,当我修改了具有属性[Table]的类时,我无法在互联网上找到行为描述的情况。

示例:我将类映射到表

using System;
using System.Data.Linq.Mapping;


namespace MyNamespace
{
    [Table(Name = "MyClass")]
    public sealed class MyClass
    {
        [Column(IsPrimaryKey = true)]
        public Guid Id { get; set; }

        [Column(CanBeNull = false)]
        public decimal TotalSum { get; set; }

        [Column(CanBeNull = false)]
        public decimal ResultSum { get; set; }

        [Column(CanBeNull = false)]
        public MyEnum Status { get; set; }

    }
}

现在我需要从类中删除字段'Sta​​tus'并添加类型为'MyNewEnum'的字段。在旧的'MyClass'表中,我有一些数据。旧表'MyClass'会被删除或更新,还是应用程序会出错?

更新

我在编辑列名后检查了表行为:

  

sql raise error

     

System.Data.SqlServerCe.SqlCeException(0x80004005):列名无效。 [节点名称(如果有)= t0,列名= MyNewEnum]。

我可以强制删除并使用属性重新创建表吗?

1 个答案:

答案 0 :(得分:0)

用于添加列' MyNewEnum'使用下面的代码,而删除列不可用于此处[https://msdn.microsoft.com/en-us/library/windows/apps/hh394018(v=vs.105).aspx#BKMK_UnusedColumnsTablesandDatabases]

DatabaseSchemaUpdater dbUpdater = Empdb.CreateDatabaseSchemaUpdater();
// Add the column
try
{
dbUpdater.AddColumn<MyClass>("MyNewEnum"); 
dbUpdater.Execute(); 
}
catch { /* Nothing */ }