1、Sqlserver是微软的亲儿子,很少会报错,EF报错问题最多出现在Mysql。以下使用mysql为例子
C#一般很形象,带Core的都是.Net Core平台的。
所以在.NetFramework平台我们使用EF6,也就是EntityFramework6
在.NetCore平台使用EFCore
2、直接上代码 (.Net6)
internal class Program
{
static void Main(string[] args)
{
using (var context = new MyDbContext())
{
try
{
// 查询第一条用户数据
var user = context.Users.FirstOrDefault();
if (user != null)
{
Console.WriteLine("用户ID: {0}", user.Id);
Console.WriteLine("用户名: {0}", user.Name);
Console.WriteLine("用户邮箱: {0}", user.Email);
}
else
{
Console.WriteLine("没有找到用户数据。");
}
}
catch (Exception ex)
{
Console.WriteLine("发生错误: " + ex.Message);
}
}
Console.ReadLine();
}
}
[Table("userinfo")]
public class User
{
public int Id { get; set; }
public string Name { get; set; }
public string Email { get; set; }
}
public class MyDbContext : DbContext
{
/* public MyDbContext(DbContextOptions<MyDbContext> option) : base(option)
{
}*/
private string GetConnectionString()
{
// 返回适用于MySQL的连接字符串
return "server=localhost;database=mvvmlighteap;user=root;password=1314;";
}
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
base.OnConfiguring(optionsBuilder);
optionsBuilder.UseMySql(connectionString, ServerVersion.AutoDetect(connectionString));
}
public string connectionString => GetConnectionString();
public DbSet<User> Users { get; set; }
}
.Net Core平台一般很少报错,直接Nuget安装两个类库就行
Pomelo.EntityFrameworkCore.MySql
Microsoft.EntityFrameworkCore
3、.NetFramework使用EF6
internal class Program
{
static void Main(string[] args)
{
using (var context = new MyDbContext())
{
try
{
// 查询第一条用户数据
var user = context.Users.FirstOrDefault();
if (user != null)
{
Console.WriteLine("用户ID: {0}", user.Id);
Console.WriteLine("用户名: {0}", user.Name);
Console.WriteLine("用户邮箱: {0}", user.Email);
}
else
{
Console.WriteLine("没有找到用户数据。");
}
}
catch (Exception ex)
{
Console.WriteLine("发生错误: " + ex.Message);
}
}
Console.ReadLine();
}
}
[Table("userinfo")]
public class User
{
public int Id { get; set; }
public string Name { get; set; }
public string Email { get; set; }
}
public class MyDbContext : DbContext
{
public MyDbContext() : base("MyDbContext")
{
}
public DbSet<User> Users { get; set; }
}
它是一定要配置web.config或者App.config的
需要注意的是,Mysql.Data.Entity已经弃用了,使用MySql.Data.EntityFramework
在以前需要注意MySql.Data和Mysql.Data.Entity的版本号一致,现在
MySql.Data和MySql.Data.EntityFramework的版本号一致
你要明白谁是微软的亲儿子,是sqlserver所以.config文件的默认值是
<entityFramework>
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>
</entityFramework>
需要改成
<entityFramework>
<providers>
<provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.EntityFramework, Version=8.4.0.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/>
</providers>
</entityFramework>
注意你的版本号
当你安装MySql.Data.EntityFramework后默认配置文件会出现
<system.data>
<DbProviderFactories>
<remove invariant="MySql.Data.MySqlClient" />
<add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=8.4.0.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
</DbProviderFactories>
</system.data>
如果没有需要加上
标签:Console,WriteLine,区别,get,EF6,user,EFCore,public,string From: https://www.cnblogs.com/guchen33/p/18236072