Найти объект для данного первичного ключа в рамках сущности - PullRequest
7 голосов
/ 04 декабря 2011

У меня есть таблица «Клиент», и она соответствует ORMapping Entity Customer в структуре сущностей, и я хочу найти объект, соответствующий данному первичному ключу.Что-то вроде customerobject.getbjectByID() вместо лямбда-выражения или запроса.

Ответы [ 5 ]

9 голосов
/ 04 декабря 2011
var Customer = from c in datacontext.Customer
               where c.CustomerID == your_key
               select c;

Предполагается, что в вашей таблице клиентов есть столбец CustomerID, и это первичный ключ.

Использование метода Find в DbSet:

Customer customer= db.Customer.Find(your_key);

Использование лямбда-выражения:

 var customer= dataContext.Customer.Where(x=>x.CustomerID==your_key).FirstOrDefault();
7 голосов
/ 04 июня 2013

"вместо лямбда-выражения или запроса"

customerobject.Find(id);

Более конкретно:

var myDbSetTableEntity = context.MyDbSetTableEntity.Find(object key1, object key2)
3 голосов
/ 04 декабря 2011

Самый компактный способ:

var myCustomer = myContext.Customers.SingleOrDefault(c => c.Id == wantedId);

который в основном краткий для

myContext.Customers.Where(c => c.Id == wantedId).SingleOrDefault();

Другими методами выбора кандидатов являются Single (), First () и FirstOrDefault ()

1 голос
/ 13 июля 2015

для составных ключей: customerobject.Find(key1, key2, key3)

в каком порядке вы указываете ключи, если они все являются строками?

0 голосов
/ 06 марта 2016

Если у вас есть составной ключ, создайте массив объектов и передайте его в 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;
}
...