I have a table:
CREATE TABLE [dbo].[Realty]( [Id] [int] IDENTITY(1,1) NOT NULL, [RankingBonus] [int] NOT NULL, [Ranking] AS ([Id]+[RankingBonus]) PERSISTED NOT NULL .... )
And a view:
CREATE View [dbo].[FilteredRealty] AS SELECT realty.Id as realtyId, ... COALESCE(realty.Wgs84X, ruian_cobce.Wgs84X, ruian_obec.Wgs84X) as Wgs84X, COALESCE(realty.Wgs84Y, ruian_cobce.Wgs84Y, ruian_obec.Wgs84Y) as Wgs84Y, realty.Ranking, ... FROM realty JOIN Category ON realty.CategoryId = Category.Id LEFT JOIN ruian_cobce ON realty.cobceId = ruian_cobce.cobce_kod LEFT JOIN ruian_obec ON realty.obecId = ruian_obec.obec_kod LEFT JOIN okres ON realty.okresId = okres.okres_kod LEFT JOIN ExternFile ON realty.Id = ExternFile.ForeignId AND ExternFile.IsMain = 1 AND ExternFile.ForeignTable = 5 INNER JOIN Person ON realty.OwnerId = Person.Id WHERE Person.ConfirmStatus = 1
I have a dbml model in C# (LinqToSQL) with the FilteredRealty view in it. The [Ranking] field is recognized as a nullable int and so I have to fix the type in the generated code every time when I change anything in the database. This is very frustrating for me and a lot of manual work.
There are no aggregates used in FilteredRealty (regarding this related question).
Why is the Ranking column of the view considered as nullable if Realty.Ranking is non-nullable?