6
I Use This!
Activity Not Available

News

Analyzed 3 months ago. based on code collected 4 months ago.
Posted about 13 years ago by danclax <[email protected]>
Есть класс: public abstract class MyAccessor: DataAccessor { [SprocName("GetMyStuff")] public abstract List<MyRow> GetMyStuff(int tmp); } Его использование: using (DbManager db = new DbManager(new ... [More] BLToolkit.Data.DataProvider.OdbcDataProvider(), myConnectionString)) { MyAccessor accessor = DataAccessor.CreateInstance<MyAccessor>(db); List<MyRow> details = accessor.GetMyStuff(1); } Ошибка: [NotSupportedException] Specified method is not supported. Возникает здесь: OdbcDataProvider.cs public override ISqlProvider CreateSqlProvider() { throw new NotSupportedException(); } Этот метод вызывается отсюда: DataProviderBase.cs public virtual object Convert(object value, ConvertType convertType) { return SqlProvider.Convert(value, convertType); } Где value = "tmp", convertType = NameToCommandParameter Как я понимаю, это не должно работать никаким образом. У кого-нибудь получалось вызвать хранимку MS SQL через ODBC-подключение? [Less]
Posted about 13 years ago by shakirov.ruslan &lt;[email protected]&gt;
Описание среды: В своем проекте мы используем BLToolkit в качестве ORM для локальной БД Silverlight клиента (DB: SQLite, DataProvider: CSharp-Sqlite). Описание ситуации: При построении некоторых linq запросов (например, включающих в себя ... [More] StringField.ToLower() == "abc"), на вход DbManager.ExecuteReader приходит QueryContext с дублирующимися параметрами. var parameters = sqlQuery.IsParameterDependent ? sqlQuery.Parameters.ToArray() : query.GetParameters(); foreach (var parameter in parameters) { var cmdParam = DataProvider.CreateParameterObject(cmd); cmdParam.ParameterName = parameter.Key; cmdParam.Value = parameter.Value; DataProvider.AttachParameter(cmd, cmdParam); } Соответственно, при попытке добавить эти параметры к SqlCommand вылетает эксепшн дублирующихся параметров. [Less]
Posted about 13 years ago
Добрый день всем , проясните пожалйста ситуацию , здесь в 87 строке сказано что наследование TPT есть, ЗдесьАвтор: SkySandyДата: 12.11.10 судя по по описанию классов тоже упоминается (и возможно у кого-то даже работает ). Подсажите пжлста можно ... [More] ли все таки с помощью BLT сделать следующий маппинг: Структура классов и таблиц упрощенно: Иерархия классов public class BaseObject{ public Guid ID{get;set;} public string Name {get;set;} } public class User:BaseObject{ public string UserData {get;set;} } public class MegaUser:User{ public string MegaData {get;set;} } База: CREATE TABLE [dbo].[BaseObjectTable]( [bo_ID] [uniqueidentifier] NOT NULL, [bo_Name] [nvarchar](50) NULL, [bo_Type] [int] NULL, -- для дискриминатора если он нужен при таком маппинге Primary Key (bo_ID) ) CREATE TABLE [dbo].[User]( usr_ID [uniqueidentifier] NOT NULL, -- usr_ID = bo_ID - для юзера тоже значение ключа что и и таблице BaseObjectTable usr_Data [nvarchar](50) NULL, Primary Key (usr_ID) ) CREATE TABLE [dbo].[MegaUser]( musr_ID [uniqueidentifier] NOT NULL, -- musr_ID = usr_ID = bo_ID - аналогично для мега юзера значение ключей во всех табличках совпадают musr_MegaData [nvarchar](50) NULL, Primary Key (car_ID) ) Соответственно ожидаемый результат для запроса на LINQ var res=dbmanager.MegaUsers.ToList() ; : Select bo_ID, bo_Name,usr_Data,musr_MegaData from BaseObjectTable join User on usr_ID = bo_ID join MegaUser on musr_ID = usr_ID Пробовал описывать маппинг вот так [TableName("BaseObjectTable")] [InheritanceMapping(Code = 1, Type = typeof(User))] [InheritanceMapping(Code = 2, Type = typeof(MegaUser))] public class BaseObject{ [PrimaryKey] [MapField("bo_ID")] public Guid ID{get;set;} [MapField("bo_Name")] public string Name { get; set; } [MapField(IsInheritanceDiscriminator = true,MapName ="bo_Type")] public int Type { get; set; } } [TableName("User")] public partial class User : BaseObject { [MapField("usr_Data")] public string UserData { get; set; } } [TableName("MegaUser")] public partial class MegaUser: User { [MapField("musr_MegaData")] public string MegaData{ get; set; } } и вот так (для переопредения поля ID на usr_ID вместо bo_ID [TableName("User")] public partial class User : BaseObject { [PrimaryKey] [MapField("usr_ID")] public override Guid ID{get;set;} .... } как ни кручу получается все время примерно одно и тоже : SELECT [t1].[musr_MegaData] as [MegaData], [t1].[usr_Data] as [UserData], [t1].[bo_ID] as [ID], [t1].[bo_Name] as [Name], [t1].[bo_Type] as [Type1] FROM [User] [t1] WHERE [t1].[bo_Type] = 2 Заранее спасибо. PS: если что не так сильно не пинайте — гугл помочь не смог , а документации откровенно говоря не хватает [Less]
Posted about 13 years ago by snowstorm &lt;[email protected]&gt;
Необходимо перед каждым запросом к БД устанавливать CONTEXT_INFO В NHibernate, например, можно определить ConnectionProvider и внутри него реализоавать эту функциональность. Какой подход избрать для BLT в случае если требуется выполнить SET CONTEXT_INFO после открытия соединения и перед каждым запросом к БД MSSQL?
Posted about 13 years ago by snowstorm &lt;[email protected]&gt;
Я правильно понимаю что в последних версиях BLT Xml-маппинг не поддерживается, остался только маппинг на атрибутах?
Posted about 13 years ago
1) Будет ли поддержка новых команд MSSQL 2012? 2) Будет ли поддержка асинхронного выполнения запросов? Если да, то когда ждать?
Posted about 13 years ago by ili &lt;[email protected]&gt;
как я понял миграция BLT -> linq2db происходит весьма активно, но часть функционала BLT в linq2db просто не попадет (дата аксессоры, эмит, обджект биндер, едитабл обджект и т.п.) в связи с чем встает вопрос, как будут сосуществовать и развиваться ... [More] эти 2 проекта? пока коммиты идут в оба репозитария, но этож будет закат солнца вручную, в особенноети если считать что один проект это си-диез, а другой немераль. [Less]
Posted about 13 years ago by Jack128 &lt;[email protected]&gt;
такой код: [Test] public void ParallelSelectAndUpdate() { ForEachProvider(Providers.Select(p => p.Name).Except(new[] {ProviderName.Firebird}).ToArray(), context => { ... [More] var db = context as TestDbManager; if (db == null) return; db.BeginTransaction(); try { Assert.That(db.Person.Count(), Is.GreaterThan(0)); foreach (var parent in db.Person) // читаем { new SqlQuery(db).Update(parent); // и обновляем } } finally { db.RollbackTransaction(); } }); } выдает ошибку: System.InvalidOperationException : Invalid attempt of read when the reader is closed. at FirebirdSql.Data.FirebirdClient.FbDataReader.CheckState() at FirebirdSql.Data.FirebirdClient.FbDataReader.Read() at BLToolkit.Data.DataProvider.DataProviderBase.DataReaderBase`1.Read() in DataProviderBase.cs: line 341 at BLToolkit.Data.Linq.Query`1.<RunQuery>d__11.MoveNext() in Query.cs: line 330 at BLToolkit.Data.Linq.Query`1.<Map>d__60.MoveNext() in Query.cs: line 988 at Data.Linq.SelectTest.<ParallelSelectAndUpdate>b__86(ITestDataContext context) in SelectTest.cs: line 535 at Data.Linq.TestBase.ForEachProvider(Type expectedException, String[] exceptList, Action`1 func) in TestBase.cs: line 238 at Data.Linq.SelectTest.ParallelSelectAndUpdate() in SelectTest.cs: line 525 Это by design или косяк? [Less]
Posted about 13 years ago by SHEMA &lt;[email protected]&gt;
Привет. Есть приложение, критичное по времени выполнения. Допустим также, есть какая-то сложная бизнес процедура, выполняющая многочисленные инсерты. Есть идея — вместо вызова единичных инсертов 30-40 раз, сделать по примеру UoF паттерна ... [More] какой-то интерфейс, который бы складывал все инсерт вызовы в один батч, а потом посылал все на SQL Server одной командой. Вопросы: — имеет ли это смысл вообще? — возможно ли такое реализовать средствами BL и как (все инсерты параметризованные, конечно) — ну и может какой пример есть или готовое решение? все таки задача не тривиальная если глубже копнуть спасибо [Less]
Posted over 13 years ago by 23Poison &lt;[email protected]&gt;
Всем привет! Есть такая задача: есть некая таблица v.GetTable<T>() так вот для нее надо построить where условие со значениями в upper case типа того: v.GetTable<T>().Where(string.Format(" upper({0}) like upper('%{1}%') ",column ... [More] , value); тк нужно применительно к Postgresql, то можно использовать ILIKE или ~~*, соответственно без upper() подскажите, люди добрые [Less]