动态关联表

原帖地址:
http://community.csdn.net/Expert/topic/3452/3452577.xml?temp=.1377375


--示例数据
create table [table](A sysname,B varchar(10))
insert [table] select 'table_1','a'
union  all     select 'table_2','b'

create table table_1(A int)
insert table_1 select 1
union  all     select 2

create table table_2(A int)
insert table_2 select 3
union  all     select 4
go

/*--问题说明:

 table中,A字段存储着其他表的名称
 A字段中,记录和各个表的A字段的最大值
 即得到如下结果:

 table.B   C
    --------  -----------
 a         1
 b         2
--*/

--处理方法
declare @s varchar(8000)
set @s=''
select @s=@s+' when '''+A+''' then(select max(A) from ['+A+'])'
from [table] group by A
exec('select B,C=case A'+@s+' end from [table]')
go

--删除测试
drop table [table],table_1,table_2

/*--测试结果

B          C          
---------- -----------
a          2
b          4
--*/

 
如果你想在 C# 中动态创建一个类并关联到数据库中的,可以使用 Entity Framework Core。下面是一个简单的示例: 首先,需要在项目中安装 Entity Framework Core 包,可以使用 NuGet 包管理器或命令行进行安装: ``` Install-Package Microsoft.EntityFrameworkCore ``` 然后,定义一个 DbContext 类来示数据库上下文。在这个类中,可以使用 DbSet<TEntity> 属性来示一个,并通过 OnModelCreating 方法来配置和实体之间的映射关系。在这个方法中,可以使用 Fluent API 来配置实体的属性、关系和约束等信息。 接下来,在运行时动态创建一个类并关联到数据库中的,可以使用以下代码: ```csharp using Microsoft.EntityFrameworkCore; using System; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; using System.Reflection; using System.Reflection.Emit; namespace DynamicClassDemo { class Program { static void Main(string[] args) { // 创建数据库上下文 using (var context = new MyDbContext()) { // 动态创建一个类并关联到数据库中的 var entityType = context.Model.AddEntityType("MyTable"); entityType.AddProperty("Id", typeof(int)).IsRequired().ValueGeneratedOnAdd(); entityType.AddProperty("Name", typeof(string)).IsRequired().HasMaxLength(50); entityType.AddKey("Id"); // 保存更改到数据库 context.Database.EnsureCreated(); // 创建一个实例并插入到数据库中 var entity = Activator.CreateInstance(entityType.ClrType); entityType.FindProperty("Name").PropertyInfo.SetValue(entity, "Test"); context.Add(entity); context.SaveChanges(); } } } // 定义数据库上下文 public class MyDbContext : DbContext { protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { optionsBuilder.UseSqlServer(@"Server=(localdb)\mssqllocaldb;Database=MyDatabase;Trusted_Connection=True;"); } } } ``` 在上面的示例中,使用 AddEntityType 方法动态创建一个实体类型,并通过 AddProperty 和 AddKey 方法来配置实体的属性和键等信息。然后,使用 MyDbContext 类来示数据库上下文,并在 OnConfiguring 方法中指定数据库连接字符串。最后,使用 Activator.CreateInstance 方法创建一个实例并插入到数据库中。 需要注意的是,动态创建的类和属性等信息不会在项目中生成代码文件,而是在运行时动态生成,所以在开发过程中可能需要更多的测试和调试。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值