我想通过使用相同的功能来获取实体。如何在Linqtosql中生成通用的GetById(int Id)函数?
public static T getById<T>(int Id)
{
myDataContect db = new myDataContect();
return (from u in db.GetTable<T> where u.Id == Id select u).FirstOrDefault();
}
如何编写有效函数?有任何想法吗 ?
我想通过使用相同的功能来获取实体。如何在Linqtosql中生成通用的GetById(int Id)函数?
public static T getById<T>(int Id)
{
myDataContect db = new myDataContect();
return (from u in db.GetTable<T> where u.Id == Id select u).FirstOrDefault();
}
如何编写有效函数?有任何想法吗 ?
您可以创建一个接口来声明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();
}
+1 - 正确无误。 – TomTom 2014-11-03 14:42:11
类型'T'必须是引用类型,以便将其用作通用类型或方法'System.Data.Linq.DataContext.GetTable
@GeylaniARCA这是因为GetTable方法的约束,您还需要一个类约束:'where T:class,ICommon' – 2014-11-03 14:56:26
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();
}
有什么不对的电流是多少? – Reniuz 2014-11-03 14:40:19