2011-08-22 56 views
4

表:UserTypes如何引用LINQ中使用保留字命名的字段?

领域:row,name,Type

这个代码不工作:

Int64 row = 1; 
var myType = (from b in dc.UserTypes where b.Row == user.Row select b).Single(); 
myType.Type = "personalPage"; 
dc.SubmitChanges(); 

但是,这个代码...
dc.ExecuteQuery<UserType >("update dbo.UserType set Type='personalPage' where row={0}",user.Row);

我得到这个错误:

Type the word is a word reserved.i can not user word Type

编辑

DBML

[Table(Name="dbo.UserType")] 
    public partial class UserType 
{ 

    private long _Row; 

    private string _Type; 

    public UserType() 
    { 
    } 

    [Column(Storage="_Row", DbType="BigInt NOT NULL")] 
    public long Row 
    { 
    get 
     { 
     return this._Row; 
     } 
    set 
     { 
     if ((this._Row != value)) 
     { 
      this._Row = value; 
     } 
     } 
    } 

    [Column(Storage="_Type", DbType="NVarChar(500) NOT NULL", CanBeNull=false)] 
    public string Type 
    { 
    get 
    { 
     return this._Type; 
    } 
    set 
    { 
     if ((this._Type != value)) 
     { 
      this._Type = value; 
     } 
    } 
    } 

}    
+3

是。这就是为什么使用保留字如类型作为字段名称是一个坏主意。 – JohnFx

+0

如果你使用IDE来设置映射(DBML),它通常会自动生成这个对象...... –

+2

@JohnFx - 在他的防守中,它是一个C#保留字而不是'SQL' - 也许他是一个DB人员,不是OO程序员。 – JNK

回答

7

进入您的LINQ到SQL的DBML映射和被一列用于UserType.Type修改映射命名为“Type”到名为“[Type]”的列。您可以在设计人员中手动执行此操作。

相关问题