Tag: database schema

如何从MS SQL数据表中检索列默认值

我使用DataAdapter.FillSchema从MS SQL检索表的架构。 不幸的是,这不会返回列的默认值。 有没有办法以快速有效的方式检索此值作为模式的一部分,因为我需要检查数百个表? 谢谢!

如何使用SqlConnection.GetSchema()获取列主键约束

我有一些ADO.NET代码来动态检测数据库模式,我需要的是如何使用SqlConnection上的GetSchema方法获取唯一列约束和主键约束。 这是我的代码: conn.Open(); SqlCommand mSqlCommand = new SqlCommand(“sp_pkeys”, conn); mSqlCommand.CommandType = CommandType.StoredProcedure; mSqlCommand.Parameters.Add( “@table_name”, SqlDbType.NVarChar).Value = tableName; SqlDataReader mReader = mSqlCommand.ExecuteReader( (CommandBehavior.KeyInfo | CommandBehavior.SchemaOnly)); //ExecuteReader(); DataTable schema = mReader.GetSchemaTable(); mReader.Close(); conn.Close();

在Entity Framework Core中动态更改架构

UPD就是我解决问题的方法。 虽然它可能不是最好的,但它对我有用。 我在使用EF Core时遇到问题。 我想通过模式机制在项目数据库中为不同公司分离数据。 我的问题是如何在运行时更改模式名称? 我已经找到了关于这个问题的类似问题 ,但它仍然是答案,我有一些不同的条件。 所以我有Resolve方法,在必要时授予db-context public static void Resolve(IServiceCollection services) { services.AddIdentity() .AddEntityFrameworkStores() .AddDefaultTokenProviders(); services.AddTransient(); … } 我可以在OnModelCreating设置schema-name,但是,如前所述,这个方法只调用一次,所以我可以在这里设置模式名称globaly protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.HasDefaultSchema(“public”); base.OnModelCreating(modelBuilder); } 或者通过类似的属性在模型中 [Table(“order”, Schema = “public”)] public class Order{…} 但是如何在运行时更改模式名称? 我根据每个请求创建了ef的上下文,但首先我通过请求为数据库中的某个模式共享表格查找了用户的模式名称。 那么组织该机制的真正方法是什么: 根据用户的凭据计算出模式名称; 从特定架构的数据库中获取特定于用户的数据。 谢谢。 PS我使用PostgreSql,这是表名低的原因。