c# - How to detect if column in SELECT can be null? -
i'm using dacfx @ design-time create c# data layer generated sql files in ssdt database project. see sqlsharpener project on github see i'm talking about.
i'm generating dto objects represent row coming select statement of stored procedure. determine if property on dto should nullable value type, i'm checking see if column nullable in table came from. in case you're curious looks like, here's code. (tsqlobject here instance of tsqlobject stored procedure)
var bodycolumntypes = tsqlobject.getreferenced(dac.procedure.bodydependencies) .where(x => x.objecttype.name == "column") .groupby(bd => string.join(".", bd.name.parts)) .select(grp => grp.first()) .todictionary( key => string.join(".", key.name.parts), val => new datatype { map = datatypehelper.instance.getmap(typeformat.sqlserverdbtype, val.getreferenced(dac.column.datatype).first().name.parts.last()), nullable = dac.column.nullable.getvalue<bool>(val) }, stringcomparer.invariantcultureignorecase); the problem didn't account left or right outer joins, make value null.
how can determine if column in select statement can null? or, if question broad, how can determine if column came table left outer joined?
i think found answer. given queryspecification of select statement, can list of joins using:
var joins = queryspecification.fromclause.tablereferences.oftype<qualifiedjoin>(); each qualifiedjoin object has qualifiedjointype property enumeration set inner, leftouter, rightouter, or fullouter.
Comments
Post a Comment