0

我有一个简单的表,我可以使用 MySQL 命令执行插入和读取操作。出于某种原因,使用 Linq2DB 时出现以下错误:

连接选项“数据源”重复。在 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 数据库设置类:

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;
    }
4

1 回答 1

1

此错误由 MySql.Data 提供程序本身生成,因为您设置了两次服务器选项:Server=.\;datasource=localhost;。服务器和数据源是同义词,与host, data source, address,addrnetwork address

于 2020-02-07T12:01:48.260 回答