Для первого вопроса:
a
и b
, чем убедитесь, что a
меньше или равно b
Для второго вопроса:
SELECT * FROM many_to_many_table ГДЕ a = A или b = A
На самом деле это два вопроса в одном:
Dispose()
контекста? Ответы:
using
является неявным Dispose()
в блоке try-finally
. Отдельный оператор Dispose
может быть пропущен, когда исключение происходит раньше. Кроме того, в большинстве распространенных случаев не вызывать Dispose
вообще (неявно или явно) не является вредным . 1 Как некоторые люди прокомментировали, исключение из этого правила заключается в том, что контекст является частью компонента, который сам реализует IDisposable
и делится своим жизненным циклом. В этом случае вы вызываете context.Dispose()
в методе Dispose
компонента.
Вы можете определить свой контекст базы данных как поле класса и реализовать IDisposable
. Что-то вроде ниже:
public class MyCoolDBManager : IDisposable
{
// Define the context here.
private DomainDbContext _db;
// Constructor.
public MyCoolDBManager()
{
// Create a new instance of the context.
_db = new DomainDbContext();
}
// Your method.
public string GetName(string userId)
{
string userName = context.UserNameItems.FirstOrDefault(x => x.UserId == userId);
return userName;
}
// Implement dispose method.
// NOTE: It is better to follow the Dispose pattern.
public void Dispose()
{
_db.dispose();
_db = null;
}
}
Я следовал за хорошими учебниками по использованию EF, и они не нарушают контекст.
Мне было немного интересно, и я заметил, что даже уважаемый Microsoft VIP не распоряжается контекстом , Я обнаружил, что вам не нужно размещать dbContext в нормальной ситуации.
Если вы хотите получить дополнительную информацию, вы можете прочитать этот пост в блоге , в котором кратко объясняется, почему.
Еще лучше:
public static string GetName(string userId)
{
using (var context = new DomainDbContext()) {
return context.UserNameItems.FirstOrDefault(x => x.UserId == userId);
}
}
Не нужно возвращать результат из области using
; просто верните его немедленно, и вы все равно получите желаемое поведение.
using
, вместо i> try-finally, потому что это более или менее то же самое. Поusing
вам никогда не нужно называтьDispose
. – Gert Arnold 12 June 2014 в 18:54dispose
в вашем контексте неправильно - это зависит от типа приложения - то есть. В MVC вы переопределяете методdispose
контроллера и вызываетеdispose
в контекст - вам только не нужно вручную его вызывать при использованииusing
– Luke T O'Brien 9 January 2017 в 12:10