Вставка или запрос linq2db возвращают ошибку: дублирован параметр подключения 'источник данных' - PullRequest
0 голосов
/ 06 февраля 2020

У меня есть простая таблица, в которой я могу выполнять операции вставки и чтения с помощью MySQL команд. По какой-то причине при использовании Linq2DB я получаю следующую ОШИБКУ:

Дублирована опция соединения 'источник данных'. at MySql .Data.MySqlClient.MySqlBaseConnectionStringBuilder.AnalyzeConnectionString

Это работает:

       private void BulkInsert(List<string> rows)
        {
            var commandText = new StringBuilder("INSERT INTO cloudevents (JobId, Name, ErrorUrgency, EventCategory, EventType, Time, Parameters) VALUES ");
            commandText.Append(string.Join(",", rows));
            commandText.Append(";");

            try
            {
                using (MySqlCommand command = MySqlConnectionConnector.CreateCommand())
                {
                    command.CommandText = commandText.ToString();
                    command.CommandType = CommandType.Text;
                    command.ExecuteNonQuery();
                }
            }
            catch (Exception e)
            {
                Console.ForegroundColor = ConsoleColor.Red;
                Console.WriteLine(e);
                throw;
            }
            finally
            {
                rows.Clear();
            }
        }

Эта ошибка:

           using (var db = new EocIpcDB())
            {
                db.Insert(new EventsOnCloudData()
                {
                    JobId = 2000,
                    ErrorUrgency = "Error",
                    EventCategory = "HW",
                    EventType = "Disk",
                    Name = "Haedware Events",
                    Time = DateTime.Now,
                    Parameters = "Lots of Parameters"
                });

                var query = from p in db.EventsOnCloudData select p;
                return query.ToList();
            }

Моя таблица данных:

    [Table("cloudevents")]
    public class EventsOnCloudData
    {
        [PrimaryKey, Identity]
        public int Key { get; set; } // primary key / uid

        [Column(Name = "Name"), NotNull]
        public string Name { get; set; }

        [Column(Name = "ErrorUrgency"), NotNull]
        public string ErrorUrgency { get; set; }

        [Column(Name = "EventCategory"), NotNull]
        public string EventCategory { get; set; }

        [Column(Name = "EventType"), NotNull]
        public string EventType { get; set; }

        [Column(Name = "JobId"), NotNull]
        public int JobId { get; set; }

        [Column(Name = "Time"), NotNull]
        public DateTime Time { get; set; } //UTC 

        [Column(Name = "Parameters"), NotNull]
        public string Parameters { get; set; } //JSON Parameters
    }

Класс подключения данных LinqtoDB:


    public class EocIpcDB : LinqToDB.Data.DataConnection
    {
        public EocIpcDB() : base("eocipcdb") { }

        public ITable<EventsOnCloudData> EventsOnCloudData => GetTable<EventsOnCloudData>();
    }

Настройки Linq 2 DB Класс:

public class EventsOnCloudSettings : ILinqToDBSettings
    {
        public IEnumerable<IDataProviderSettings> DataProviders => Enumerable.Empty<IDataProviderSettings>();

        public string DefaultConfiguration => "SqlServer";
        public string DefaultDataProvider => "SqlServer";

        public IEnumerable<IConnectionStringSettings> ConnectionStrings
        {
            get
            {
                yield return
                    new ConnectionStringSettings
                    {
                        Name = "eocipcdb",
                        ProviderName = ProviderName.MySql,
                        ConnectionString = @"Server=.\;datasource=localhost;port=3306;database=eocipcdb;username=root;password=HPdfeHPdfe#1;"
                    };
            }
        }
    }

    internal class ConnectionStringSettings : IConnectionStringSettings
    {
        public string Name { get; set; }
        public string ProviderName { get; set; }
        public string ConnectionString { get; set; }

        public bool IsGlobal => false;
    }

1 Ответ

1 голос
/ 07 февраля 2020

Эта ошибка генерируется самим провайдером MySql .Data, поскольку у вас дважды установлена ​​опция сервера: Server=.\;datasource=localhost;. Сервер и источник данных являются синонимами, наряду с host, data source, address, addr и network address

...