entity framework 和entity framework core是不一样的。ef core是以后的版本。微软总是这样变来变去。其实linq to sql挺好的,但.net 5以后就不支持了。ef core这玩意还是太笨重,加起来有几百兆的安装包。

localDB,我的感觉,其实它应该是个默认安装的sql Express,但不作为服务启动。它的默认实例路径,其实是

c:\Users\<your user name>\AppData\Local\Microsoft\Microsoft SQL Server Local DB\Instances\MSSQLLocalDB

这个路径下还有master.mdf, model.mdf,tempdb.mdf等sql server的元数据库文件。

 

默认情况下,用ef core自动生成一个数据库,数据库文件会放在c:\Users\<your user name>这个目录下。这对app当然很不爽。app希望把相关的文件都放在自己的目录下,不会系统重装数据库文件就没了。

要指定路径,单单指定AttachFilename,或者是Initial catalog是不行的,得二者一起指定,否则会报数据库文件必须自动命名或者数据库已存在的错误。如果不指定路劲,则可以单指定initial catalog。

 

示例连接字符串是这样的:

 "Data source=(LocalDB)\\MSSQLLocalDB;AttachDbFilename=<yourpath>;Initial Catalog=User;Integrated Security=True;Connect Timeout=30"

尖括号内的部分,连同尖括号一起,替换成实际路径即可。