.net 5.0 不支持 LINQ to SQL?
LINQ to SQL not supported in .net 5.0?
我的项目使用 .NetFramework 4.6.2 和来自 MSSQL 的“LINQ to SQL”查询。
A class 定义所有需要在数据库中查询并继承到 DataContext(System.Data.Linq).
的表
最近准备把程序升级到.net5.0。
但是,我发现“LINQ to SQL”似乎不支持 .net5.0。
谁能建议如何在 .net5.0 中或使用其他方式编写“LINQ to SQL”?
谢谢。
--
4 月 23 日 PM6: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)...等等
请注意,如果您的 table 有多个主键,那么您必须如下编写 override OnModelCreating,TableAClass有3个键,TableBClass有1个键。
。每个table
的设置键
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 });
}
我卡住了几天,在网上找不到例子。因此,我决定将我的代码放在这里。
。设置数据库Class
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.Key2, _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 Class
[Table("TableName")]
public class TableClassName
{
public string ColumnA { get; set;}
public string ColumnB { get; set;}
}
这个回答应该归功于所有在评论中帮助我的人。
我的项目使用 .NetFramework 4.6.2 和来自 MSSQL 的“LINQ to SQL”查询。 A class 定义所有需要在数据库中查询并继承到 DataContext(System.Data.Linq).
的表最近准备把程序升级到.net5.0。 但是,我发现“LINQ to SQL”似乎不支持 .net5.0。
谁能建议如何在 .net5.0 中或使用其他方式编写“LINQ to SQL”?
谢谢。
--
4 月 23 日 PM6: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)...等等
请注意,如果您的 table 有多个主键,那么您必须如下编写 override OnModelCreating,TableAClass有3个键,TableBClass有1个键。
。每个table
的设置键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 });
}
我卡住了几天,在网上找不到例子。因此,我决定将我的代码放在这里。
。设置数据库Class
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.Key2, _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 Class
[Table("TableName")]
public class TableClassName
{
public string ColumnA { get; set;}
public string ColumnB { get; set;}
}
这个回答应该归功于所有在评论中帮助我的人。