使用C#和实体框架在mysql中的RunTime上创建表

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用C#和实体框架在mysql中的RunTime上创建表相关的知识,希望对你有一定的参考价值。

我正在处理一个任务,我必须在按钮单击时使用现有数据源属性创建mysql表。以下是我的代码。

对此有何帮助?

public BaseDto CreateTempTable(int dataSourceId, int profileId)
        {
            var dataSourceData = Unit.DataSourceRepository.Find(x => x.DataSourceId == dataSourceId).FirstOrDefault();
            var profileData = Unit.ProfileSettingRepository.Find(x => x.ProfileSettingId == profileId).FirstOrDefault();

            var tableName = dataSourceData.Name +"_"+ profileData.Name;

            var objectType = DynamicTypeBuilder.Createtype(dataSourceData);
            var listType = typeof(List<>);
            var constructedListType = listType.MakeGenericType(objectType);

            AddTableIntempDb(tableName, constructedListType);
            return Success();
        }

        private void AddTableIntempDb(string tableName, Type type)
        {
            //Code here
        }
答案

EF是ORM,而不是数据库设计工具。我只能找到EF不支持动态模式的语句。

有人找到了work around it的方法(请注意链接的博客文章是关于创建临时表)。请记住,您的源代码控制将不知道您在生产中动态创建的所有表。

如果您真的想在运行时生成表,建议使用ADO.NET。

以上是关于使用C#和实体框架在mysql中的RunTime上创建表的主要内容,如果未能解决你的问题,请参考以下文章

我如何在 Swift 中的 RunTIme 上创建或生成新实体

无法为实体框架6使用MySQL连接

在 MySQL 数据库上运行迁移时出现实体框架错误。 “空间/全文/哈希索引和显式索引顺序的错误使用”

实体框架向导在MySQL上崩溃

实体框架向导在 MySQL 上崩溃

使用 MySQL 和实体框架 6 StrongTypingException 错误