2015-03-30 3 views
0

Я хочу установить тайм-аут для моего приложения DataContext Class. Я могу найти много примеров для C# (1, 2) в переводе с vb.net было быКак установить широко распространенное приложение DataContext.CommandTimeout

Partial Class SampleDBDataContext 
    Inherits System.Data.Linq.DataContext 
    Partial Private Sub OnCreated() 
     'Put your desired timeout here. 
     Me.CommandTimeout = 3600 
    End Sub 
End Class 

Но это дает ошибку: Class '<classname1>' must declare a 'Sub New' because its base class '<classname2>' has more than one accessible 'Sub New' that can be called with no arguments.

У меня есть два вопроса сейчас: Я просто не в состоянии решить проблему "sub new". Если я ставлю

Sub New() 
End Sub 

я получаю ошибку, что этот конструктор оленьей кожи выход, но я не уверен, что существующий конструктор, я должен использовать, так как я никогда не использовал Partial Class раньше.

Во-вторых, я не уверен, что SampleDBDataContext Я должен использовать, так как у меня есть решение под названием «Мой мир», где у меня есть MySolution.SampleDBDataContext, и у меня также есть System.Date.Linq.DataContext.

ответ

0

Решение состоит в том, что вам необходимо создать частичный класс для класса DataContext, созданный с .dbml. Недавно созданная частичная необходимость должна иметь соответствующее пространство имен и имя как автоматически сгенерированное, чтобы они могли быть распознаны как одна единица класса.

После того, как ваш класс признается частичное автоматически созданное DataContext класса, вам не нужно даже вручную наследует System.Data.Linq.DataContext, поскольку автоматически генерируется один уже наследует System.Data.Linq.DataContext.

Что касается сообщений об ошибке:

Class '<classname1>' must declare a 'Sub New' because its base class '<classname2>' has more than one accessible 'Sub New' that can be called with no arguments.

это потому, что SampleDBDataContext наследует System.Data.Linq.DataContext без предоставления конструктора (Sub New). У базового класса нет конструктора без параметров, который является конструктором по умолчанию, который должен вызвать инициализацию класса, так что компилятор не может определить, какой параметризованный конструктор он должен вызвать и как должны быть предоставлены параметры. Решение в этом случае состоит не в том, чтобы предоставить конструктор в вашем частичном классе, а в том, чтобы он соответствовал правильной «другой стороне» частичного класса, то есть автогенерированной. Автогенерация DataContext требует, чтобы все конструкторы были объявлены так, чтобы ваш частичный класс не имел обязательства предоставить его.

+0

Привет! Thats много для вашего ответа! Я сделал много исследований по моему решению, и я узнал, что нет .dbml, и у меня есть только одно свойство timetime в system.linq.datacontext. Таким образом, нет автогенератора. Может быть, это как-то связано с моей архитектурой? У меня есть SQL-сервер с хранимой процедурой. Я заполняю набор данных с выходом SP и запрашиваю данные с LINQ. – ruedi

+0

@ruedi Я предположил, что вы используете LINQ-to-SQL, как в этом блоге, и он имеет .dbml: http://weblogs.asp.net/scottgu/using-linq-to-sql-part- 1, нет? Так что же вы используете? – har07

+1

Извините, я новичок в этом. Я использую Linq в Dataset и нашел решение, которое помогло мне сделать все (http://www.codeproject.com/Articles/13009/Accesing-CommandTimeout-properties-in-a-TableAdapt). Тем не менее, ваш ответ - решение проблемы в вопросе. Благодаря! – ruedi