EF

  1. 搭建

新搭建好的EF,当你运行程序时报:

The model backing the 'SqlServerDbContext' context has changed since the database was created. Consider using Code First Migrations to update the database 

这个时候如果你用 add-migration xxx   报如下错:

No migrations configuration type was found in the assembly 'webTest'. (In Visual Studio you can use the Enable-Migrations command from Package Manager Console to add a migrations configuration).

解决办法:去掉上下文 对象中的 : base("name=TestDb")  。执行成功后,再将代码还原。

 /// <summary>
        /// 利用App.config中配置的字符串连接数据库
        /// </summary>
        public SqlServerDbContext() : base("name=TestDb")
        {
        }
  1.  插入报错:An error occurred while updating the entries. See the inner exception for de

基本是实体问题,要么主键问题,要么字段多了少了,类型不对。

2.  报错:Object must implement IConvertible.

检查实体类型和字段是否一致

二、搭建

1、安装EntityFrameWork(通过工具-NeGet程序包管理-管理NeGet程序包来安装或者添加引用

如果是mysql。引用EntityFrameWork、MySql.Data.EntityFramework

2、增加app.config

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <configSections>
        <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
        <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
    </configSections>
    <connectionStrings>
        <!--选择生成带密码时的连接字符串-->
        <add name="ConDb" connectionString="Server=test.xhs-sz.com,4433;Database=RealNameSysDB;User Id=realnamer;Password=#EDCvfr4;MultipleActiveResultSets=true" providerName="System.Data.SqlClient" />
     <add name="mysqlDataConn" providerName="MySql.Data.MySqlClient" connectionString="server=localhost;database=yht;uid=root;password=123;;charset=utf8mb4;" /> </connectionStrings> <startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" /> </startup> <entityFramework> <providers> <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />        

              <provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.EntityFramework, Culture=neutral, PublicKeyToken=c5687fc88969c44d">
              </provider>    

        </providers>
    </entityFramework>

</configuration>

3、增加对应数据库上下文(这里为sqlserver)

  public partial class SqlServerDbContext : DbContext
    {
        /// <summary>
        /// 利用连接字符串连接数据库
        /// </summary>
        public SqlServerDbContext(string connStr) : base(connStr)
        {
        }

        /// <summary>
        /// 利用App.config中配置的字符串连接数据库
        /// </summary>
        public SqlServerDbContext() : base("name=ConDb")
        {
        }
      
        //public virtual DbSet<EmployeeeSafetyStateTmpNew> employeeeSafetyStateTmpNewS { get; set; }
        //public virtual DbSet<TestTable> testTables { get; set; }


        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            base.OnModelCreating(modelBuilder);
            //从某个程序集中加载所有继承自EntityTypeConfiguration类到配置中
            modelBuilder.Configurations.AddFromAssembly(Assembly.GetExecutingAssembly());
        }
    }
}

4.增加数据库操作方法

5.注入,调用

IList<OrderStateRecordEntity> arrOrder = new List<OrderStateRecordEntity>() {
                    new OrderStateRecordEntity()
                    {
                        EmsListNO = "Test001",
                        Note = "Note",
                        StatusDate = DateTime.Now,
                        Channel = "999",
                        EntryNo = "test1",
                        EportNo = "testEp",
                        StatusType = 1,
                        InsertTime = DateTime.Now,
                        UploadState = 0,
                        UploadTime = DateTime.Now,
                    },
                new OrderStateRecordEntity()
                {
                    EmsListNO = "Test002",
                    Note = "Note",
                    StatusDate = DateTime.Now,
                    Channel = "999",
                    EntryNo = "test2",
                    EportNo = "testEp2",
                    StatusType = 1,
                    InsertTime = DateTime.Now,
                    UploadState = 0,
                    UploadTime = DateTime.Now,
                }
            };
            using (var contextDB = new MySqlDbContext())
            {
                //1.查询
                var list = contextDB.OrderStateRecord.ToList();

                foreach (var item in list)
                {
                    Console.WriteLine(item.StatusDate);
                }
              
                //2.添加
                //批量添加
                contextDB.OrderStateRecord.AddRange(arrOrder);
                contextDB.SaveChanges();
                
                //单个添加
                //contextDB.OrderStateRecord.Add(new OrderStateRecordEntity()
                //    {
                //        EmsListNO = "Test",
                //        Note = "Note",
                //        StatusDate = DateTime.Now,
                //        Channel = "999",
                //        EntryNo = "test1",
                //        EportNo = "testEp",
                //        StatusType = 1,
                //        InsertTime = DateTime.Now,
                //        UploadState = 0,
                //        UploadTime = DateTime.Now,
                //    });

                //var result = contextDB.SaveChanges();


                //string query = "SELECT * FROM order_state_record WHERE EmsListNO=" + project_id + " And Channel=" + sync_version_number;
                //var all = contextDB.Database.SqlQuery<OrderStateRecordEntity>(query);

                ////3.修改
                //var dbOrderStateRecord = contextDB.OrderStateRecord.FirstOrDefault(m => m.Id == 1);
                //dbOrderStateRecord.Note = "test";                
                //dbOrderStateRecord.UpdateTime = DateTime.Now;

                ////contextDB.Set<OrderStateRecordEntity>().Attach(dbOrderStateRecord);
                //contextDB.Entry(dbOrderStateRecord).State = System.Data.Entity.EntityState.Modified;
                //result = contextDB.SaveChanges();

                ////4.删除
                //dbOrderStateRecord = contextDB.OrderStateRecord.FirstOrDefault(m => m.Name == "中铁一局集团有限公司");
                //contextDB.OrderStateRecord.Remove(dbOrderStateRecord);
                //result = contextDB.SaveChanges();

            }

 

 

全代码下载:https://download.csdn.net/download/xbding/74430533

 

搭建可参照:https://www.cnblogs.com/zpyplan/p/9565863.html

语句使用参照:https://www.cnblogs.com/zhaoshujie/p/10694188.html

posted @ 2021-09-02 15:41  丁焕轩  阅读(503)  评论(0编辑  收藏  举报