2011-08-22 63 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]」的列。您可以在設計人員中手動執行此操作。

相關問題