0
 var devSum = repository.Devices
            .Where(dev => dev.Id == deviceId)
            .SingleOrDefault();
        vmDeviceSummary result = new vmDeviceSummary
        {
          DeviceId = deviceId,

          DeviceName = devSum.Name,
          MacAddress = devSum.MacAddress,
          DeviceType = devSum.DeviceType.Name,
          Enabled = devSum.Enabled.ToString(),
          ConfigurationLoaded = devSum.ConfigurationLoaded.ToString(),
          AllowReload = devSum.AllowDataReload.ToString(),
          DataGroup = devSum.DataGroup.Name,
          ManagementGroup = devSum.ManagementGroup.Name,
        };

これは機能するはずだと思いましたが、datagoupsまたはmanagementGroupエンティティへのリンクの外部キーにnullがあると、エラーがスローされます。

これを回避して、外部結合のように動作し、nullを返すにはどうすればよいですか?

4

3 に答える 3

1

少し醜くなる可能性がありますが、三項演算子を使用してこれを行うことができます。

DeviceType = devSum.DeviceType != null ? devSum.DeviceType.Name : null,
于 2013-03-07T10:43:22.070 に答える
0

上記のコードをこれで変更します

var devSum = repository.Devices .Where(dev => dev.Id == deviceId) .FirstOrDefault();
于 2013-03-07T10:55:51.903 に答える
0

あなたは多分する必要がありますInclude

var devSum = repository.Devices
            .Include("DeviceType")
            .Include("ManagementGroup")
            .Where(dev => dev.Id == deviceId)
            .SingleOrDefault();
于 2013-03-07T11:01:07.340 に答える