请问asp.net core mvc怎么使用ef连接现有数据库?

请问asp.net core mvc怎么使用ef连接现有数据库?,第1张

查了一下,可以用命令行生成相应的文件:

Scaffold-DbContext "Server=.\SQLExpressDatabase=SchoolDBTrusted_Connection=True" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models

连接字符串放json里面

"ConnectionStrings": {

"MbkDbConstr": "Data Source=(localdb)\\MBKDatabase=MbkTest"

}

参考资料:

网页链接

方法如下:

/*

Desc:按指定符号分割字符串,返回分割后的元素个数

Author:LHB

UpdateDate:2016-06-28 16:20

*/

ALTER function [dbo].[Get_StrArrayLength]

(

@str nvarchar(max), --要分割的字符串

@split varchar(10) --分隔符号

)

可以参考dapper源码,或者反编译一下dapper.dll,在dapper之上再封装一层拓展方法,正好最近我也在做这个,下面代码可以参考一下:

   using Dapper

   //封装的拓展类

    public static class DapperExtension

    {

        public static int CExecute(this IDbConnection cnn, string sql, object param = null, IDbTransaction transaction = null, int? commandTimeout = null, CommandType? commandType = null)

        {

            var beginTime = DateTime.Now

            return  SqlMapper.Execute(cnn, sql, param, transaction, commandTimeout, commandType).ToLog(sql,param, beginTime)

        }

        public static int CExecute(this IDbConnection cnn, CommandDefinition command)

        {

            var beginTime = DateTime.Now

            return SqlMapper.Execute(cnn, command).ToLog(command.CommandText,command.Parameters,beginTime)

        }

        ……

        }

        

        //日志记录拓展方法

           private static T ToLog<T>(this T result, string sql, object param, DateTime beginTime, IDbConnection conn =null)

        {

            //日志记录要异步进行,防止日志记录时报错,影响业务流程

            Task.Run(()=> {

                var now = DateTime.Now

                var log = new LogModel()

                {

                    CreateTime = now,

                    SqlStr = sql,

                    ExcuteResult = result.ToJsonString(),

                    Timespan = (now - beginTime).TotalMilliseconds                    

                }

                if (param != null)

                {

                    foreach (var p in param.GetType().GetProperties())

                    {

                        log.SqlStr=log.SqlStr.Replace("@"+p.Name,p.GetValue(param).ToString())

                    }

                }

                //日志记录到MongoDB中

                MongoDbHelper.SetCollection(log, "Log_"+ now.ToString("yyyyMMdd"), "ExcuteLog")

            })

            return result

        } //调用示例:

        public int GetInfo(string sql, object param = null)

        {

             var connStr="...."//数据库连接字符串

            using (var conn = new MySqlConnection(connStr))

            {

                var result = conn.CExecute(sql, param)

                return result

            }

        }


欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/sjk/6705950.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-27
下一篇 2023-03-27

发表评论

登录后才能评论

评论列表(0条)

保存