gpt4 book ai didi

sql - 在 View 中使用时是否可以使不可为空的列可以为空? (SQL服务器)

转载 作者:行者123 更新时间:2023-12-04 18:25:42 24 4
gpt4 key购买 nike

首先,我有两个表,PersonNamesPersonNameVariations。搜索姓名时,它会找到与 PersonNames 中可用姓名之一最接近的姓名,如果该姓名不在 PersonNameVariations 表中,则将其记录在其中。

我正在使用存储过程在 PersonNames 中搜索传入的 PersonNameVariation 并返回关于找到的 PersonName 和与之比较的 PersonNameVariation

因为我使用的是 Entity Framework ,所以我需要在 Import Function 中返回一个复杂类型,但出于某种原因,它说我当前的框架不支持它。我最后的选择是使用 Entity 来返回我的存储过程。

我需要返回的结果是找到的 PersonName 和记录的 PersonNameVariation 的信息。由于我无法返回两个实体,因此我创建了一个 View PersonSearchVariationInfo 并将其添加到我的 Entity Framework 中,以便将其用作要返回的实体。

问题是搜索不会总是返回Person Name 匹配项。在某些情况下,它需要能够仅返回 PersonNameVariation 数据,这意味着 PersonSearchVariationInfo 中与 PersonName 相关的所有字段必须可以为空

我怎样才能采取我的观点并使某些字段可以为空?当我直接在 Entity Framework 中执行此操作时,出现映射错误:

Error 4 Error 3031: Problem in mapping fragments starting at line 1202:Non-nullable column myproject_vw_PersonSearchVariationInfo.DateAdded in table myproject_vw_PersonSearchVariationInfo is mapped to a nullable entity property. C:\Users\Administrator\Documents\Visual Studio 2010\Projects\MyProject\MyProject.Domain\EntityFramework\MyProjectDBEntities.edmx 1203 15 MyProject.Domain

有人有什么想法吗?

谢谢,
马特

最佳答案

也许。

你什么时候希望它可以为空?在这里,我使用 NULLIF 来强制为空并假设我有空字符串。当然是 YMMV。

元数据对于 View 中列的可空性也是正确的

CREATE TABLE dbo.Foo (ColNonNull varchar(100) NOT NULL)
GO
INSERT dbo.Foo VALUES (NULL) --fails
GO
INSERT dbo.Foo VALUES ('bar') --works
INSERT dbo.Foo VALUES ('') --works
GO
CREATE VIEW dbo.vwFoo
AS
SELECT NULLIF(ColNonNull, '') AS ColNull FROM dbo.Foo
GO
SELECT * FROM dbo.vwFoo
GO
SELECT
COLUMNPROPERTY(OBJECT_ID('dbo.Foo'), 'ColNonNull', 'AllowsNull') AS TableColNullable,
COLUMNPROPERTY(OBJECT_ID('dbo.vwFoo'), 'ColNull', 'AllowsNull') AS ViewColNullable
GO

关于sql - 在 View 中使用时是否可以使不可为空的列可以为空? (SQL服务器),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3059104/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com