我有一个表“Customer”,它在实体框架中是相应的ORMapping Entity Customer,我想找到一个与给定主键相对应的对象。
像customerobject.getbjectByID()
而不是lambda表达式或查询。
答案 0 :(得分:9)
var Customer = from c in datacontext.Customer
where c.CustomerID == your_key
select c;
假设您的客户表有一个CustomerID列,那是主键。
使用DbSet的Find方法:
Customer customer= db.Customer.Find(your_key);
使用lambda表达式:
var customer= dataContext.Customer.Where(x=>x.CustomerID==your_key).FirstOrDefault();
答案 1 :(得分:7)
“而不是lambda表达式或查询”
customerobject.Find(id);
更具体地说:
var myDbSetTableEntity = context.MyDbSetTableEntity.Find(object key1, object key2)
答案 2 :(得分:3)
最紧凑的方式:
var myCustomer = myContext.Customers.SingleOrDefault(c => c.Id == wantedId);
基本上是
的简短形式myContext.Customers.Where(c => c.Id == wantedId).SingleOrDefault();
其他候选选择方法是Single(),First()和FirstOrDefault()
答案 3 :(得分:1)
表示复合键:customerobject.Find(key1, key2, key3)
你指定键的顺序是什么,假设它们都是字符串?
答案 4 :(得分:0)
如果您有复合键,请构建一个对象数组并将其传递给Find()。例如:
try
{
RECORD rec; // ie, your entity definition of a record (row)
Object[] onePK = { id, s0, s1 };
rec = YourEntities.RECORDs.Find(onePK);
if (rec == null)
{
// handle the record-not-found situation
}
}
catch (SystemException sex)
{
string error = sex.Message;
}