如何解决.net 5.0 不支持 LINQ to SQL?
我的项目使用 .NetFramework 4.6.2 和来自 MSSQL 的“LINQ to SQL”查询。 一个类定义了所有需要在数据库中查询并继承到DataContext(System.Data.Linq)的表。
最近打算把程序升级到.net5.0。 但是,我发现“LINQ to SQL”似乎不支持 .net5.0。
有人可以建议如何在 .net5.0 中编写“LINQ to SQL”或使用其他方式吗?
谢谢。
--
4 月 23 日下午 6:38 更新:
我刚刚在 Nuget 上找到了 SqlSugarCore
,并测试它是否可以使用。但还是想知道有没有类似的工具可以使用?
解决方法
我尝试过使用 EFCore 并且效果很好。
只需在 NuGet 中安装 Microsoft.EntityFrameworkCore 和 Microsoft.EntityFrameworkCore.SqlServer。
将那些显示的错误从 L2S 替换为 EFCore。示例:DataContext(L2S) => DbContext(EFCOre),public Table TableA;(L2S) => public DbSet TableA { get;放; }(EFCore)...等
请注意,如果您的表有多个主键,那么您必须编写覆盖 OnModelCreating 如下,TableAClass 有三个键,TableBClass 有一个键。
。设置每张表的key
protected override void OnModelCreating(ModelBuilder _modelBuilder)
{
_modelBuilder.Entity<TableAClass>().HasKey(_obj => new { _obj.Key1,_obj.Key2,_obj.Key3 });
_modelBuilder.Entity<TableBClass>().HasKey(_obj => new { _obj.Key1 });
}
我被卡住了几天,在互联网上找不到示例。因此,我决定把我的代码放在这里。
。设置数据库类
public class DBClassName : DbContext
{
public DbSet<TableAClass> TableAs { get; set; }
public DbSet<TableBClass> TableBs { get; set; }
protected override void OnModelCreating(ModelBuilder _modelBuilder)
{
_modelBuilder.Entity<TableAClass>().HasKey(_obj => new { _obj.Key1,_obj.Key3 });
_modelBuilder.Entity<TableBClass>().HasKey(_obj => new { _obj.Key1 });
}
public DBClassName(string _connStr) : base(GetOptions(_connStr))
{
}
private static DbContextOptions GetOptions(string connectionString)
{
return SqlServerDbContextOptionsExtensions.UseSqlServer(new DbContextOptionsBuilder<DBClassName>(),connectionString).Options;
}
}
。设置表类
[Table("TableName")]
public class TableClassName
{
public string ColumnA { get; set;}
public string ColumnB { get; set;}
}
这个答案应该归功于所有在评论中帮助我的人。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。