2014-11-03 136 views

回答

6

您可以創建一個接口來聲明Id屬性並在您的實體中實現它。然後你就可以添加一個約束是這樣的:

// you can figure out a better name this just for example 
public interface ICommon 
{ 
    int Id { get; set; } 
} 

public static T getById<T>(int Id) where T : class, ICommon 
{ 
    myDataContect db = new myDataContect(); 
    return (from u in db.GetTable<T> where u.Id == Id select u).FirstOrDefault(); 
} 
+0

+1 - 正確無誤。 – TomTom 2014-11-03 14:42:11

+1

類型'T'必須是引用類型,以便將其用作通用類型或方法'System.Data.Linq.DataContext.GetTable ()'Iam中的參數'TEntity'。Iam出現此錯誤。 – 2014-11-03 14:51:09

+0

@GeylaniARCA這是因爲GetTable方法的約束,您還需要一個類約束:'where T:class,ICommon' – 2014-11-03 14:56:26

0
public interface ID 
{ 
    int Id { get; } 
} 

public class IDImpl : ID 
{ 
    public int Id { get; private set; } 
} 

public static T GetById<T>(int id) where T : ID 
{ 
    var myDataContect db = new myDataContect(); 
    return (from u in db.GetTable<T> where u.Id == id select u).FirstOrDefault(); 

}