我是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; }
}
}
现在我需要从类中删除字段'Status'并添加类型为'MyNewEnum'的字段。在旧的'MyClass'表中,我有一些数据。旧表'MyClass'会被删除或更新,还是应用程序会出错?
更新
我在编辑列名后检查了表行为:
sql raise error
System.Data.SqlServerCe.SqlCeException(0x80004005):列名无效。 [节点名称(如果有)= t0,列名= MyNewEnum]。
我可以强制删除并使用属性重新创建表吗?
答案 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 */ }