【发布时间】:2016-07-29 07:35:20
【问题描述】:
在 SQL 内部,我有一个主键为二进制 (8) 的表。当我使用 Update Model from Database 将该表添加到我的模型中时,我可以看到该列的 type=Binary
在 C# 中,我将该列设为 byte[]。
我可以将该列映射到 int 吗?
我知道我可以在 SQL 中使用CAST 创建一个视图:
SELECT
Client_Id,
CAST(Client_Id AS INT) AS NewClient_Id,
* /*other columns*/
FROM
dbo.Clients
但这不是解决方案,因为我必须能够写入,而不仅仅是从该表中读取。我知道我可以为插入创建存储过程,但我想避免这种情况。
我使用的是 EntityFramewor 6.1.3。
【问题讨论】:
-
您是否也要尝试将一夸脱放入品脱罐中?
binary(8)包含 8 个字节。 C# 中的int包含 4 个字节。你看到这里的问题了吗? -
@Damien_The_Unbeliever 抱歉,如果我写的东西不正确,但我正在努力让它发挥作用。我想如果我可以在 SQL 中执行
CAST,那么也许 EF 可以为我执行该转换。我可以自己在代码中将byte[]转换为 int,但我认为 EF 有这个内置,我只是不知道如何打开或配置它。 -
您可以写入视图。但是,您需要针对您的视图提供触发器,以便将值转换回来。二进制 8 也是一个很长的 IIRC
-
@Mark 我已经尝试将 int 值插入到该二进制文件(8)中,并且 SQL 正在为我转换该值,如果我在该表中插入 2 作为 ClientId,我将拥有
0x0000000000000002。我想避免视图和过程,因为我想在现有表中使用相同的方法(将 binary(8) 转换为 int)而不创建额外的 20 个视图。 -
两个属性是可能的解决方案吗? Convert value when mapping
标签: c# entity-framework entity-framework-6