精选的EF CAST

时间:2019-06-12 10:51:04

标签: c# sql-server entity-framework-6

我当前正在处理一个为其列之一具有自定义CLR类型的数据库,如果我尝试使用EDMX文件,它不会事件识别该列或不允许我将其包括在属性列表中桌子

我在模型对象上创建了一个属性(因为我在代码中使用了Dynamic DBConext,所以我只需要EDMX复制生成的类文件),就可以了,并且在出现数据库查询时运行数据库查询回到转换查询,我得到一个错误,表明EF正在寻找自定义CLR类型的DLL,

我想以某种方式在发送给SQL的查询上创建CAST或转换,以在返回到我的应用程序之前对其进行转换

类型定义如下(我试图将其强制为特定类型)

[Column(TypeName = "varbinary(max)")]

public byte[] WKBData { get; set; }

OnModelCreating方法

modelBuilder.Configurations.Add(new WKBModelMap(wkbTableName, schema));

ModelMap

public WKBModelMap(string tableIdentifier, string schema = "mrc")
        {
            this.HasKey(t => t.ElementID);//set the primary key of the EAV table

            //map the tablename
            string tableName = $"{schema}.{tableIdentifier}";
            this.ToTable(tableName);
            //this.Property(p => p.WKBData);

        }

我使用通用的Repository类获取数据

public virtual IQueryable<TEntity> Get(
            Expression<Func<TEntity, bool>> filter = null,
            Func<IQueryable<TEntity>, IOrderedQueryable<TEntity>> orderBy = null,
            string includeProperties = "")
        {
            IQueryable<TEntity> query = dbSet;

            if (filter != null)
            {
                query = query.Where(filter);
            }

            foreach (var includeProperty in includeProperties.Split
                (new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries))
            {
                query = query.Include(includeProperty);
            }

            if (orderBy != null)
            {
                return orderBy(query);
            }
            else
            {
                return query;
            }
        }

因此,当我调用Get方法时,会弹出CLR类型异常,所以我想知道,我可以在上述类/映射上使用强制转换来强制EF生成CAST或在select上进行转换吗? / p>

0 个答案:

没有答案