1

でなければなりません。Azureでは、いくつかのシャードされたデータベースとシャードのテーブルをミラーリングする外部テーブルを備えた弾性クエリデータベースが用意されています。私が使用する2つの主要なテーブルは以下のとおりです。EFを使用した弾性スケールクエリ:Nullableオブジェクトの値は

  1. チャンネル:
    • [名前] nvarchar型、NOT NULL、
    • [ID] [UNIQUEIDENTIFIER] NOT NULL、
    • [ExternalReference] nvarchar型のNULL
  2. ユーザー:
    • [メール] nvarchar型NOT NULL、
    • [姓] nvarchar型、NOT NULL、
    • [姓] nvarchar型、NOT NULL、
    • [ChannelId] [UNIQUEIDENTIFIER] NOT NULL、
    • [状態]の[int]は、NOT NULL、
    • [AvatarId] [UNIQUEIDENTIFIER] NULL、
    • [ID] [UNIQUEIDENTIFIER]、NOT NULL

私はEFとLINQを経由して、これを照会:

var user = db.Users.Include("Channel").FirstOrDefault(u => u.Email == "[email protected]");

私はエラーを取得する:T-SQLを経由して直接照会

public class User 
{ 
    public Guid Id { get; set; } = SequentialGuid.NewGuid(); 
    [Required] 
    public string Email { get; set; } 
    [Required] 
    public string FirstName { get; set; }  
    [Required]  
    public string LastName { get; set; } 
    [Index] 
    public Status Status { get; set; } 
    public Guid? AvatarId { get; set; } 
    [Index] 
    public Guid ChannelId { get; set; } 
    [ForeignKey("ChannelId")] 
    public virtual Channel Channel { get; set; } 
} 

An error occurred while executing GlobalQuery operation: Nullable object must have a value.

これは、Userクラスがどのように見えるかです

SELECT * FROM Users INNER JOIN Channels ON Users.ChannelId = Channels.Id

ができます私は同じエラーです。

SELECT * FROM Users INNER JOIN Channels ON CAST(Users.ChannelId as uniqueidentifier) = CAST(Channels.Id as uniqueidentifier)

ChannelId列およびID列がすでに非NULL可能uniqueidentifiersです:

詳しい調査の結果、(彼らはすでにある)uniqueidentifiersへのIdsをキャストしても問題が解決することを示しています。シャード内のデータも有効で、nullではないので、ここで問題となるのは何ですか?

もう1つの質問:どうすればlinqの 'uniqueidentifier'にキャストすることができますか?

+0

クエリの結果から各行を保存するクラスを表示できますか? –

答えて

0

簡単な質問では、「T-SQL経由で直接クエリする: SELECT * FROM Users INNER JOIN Channels ON Users.ChannelId = Channels.Id は私に同じエラーを表示します。あなたはElastic Query HeadデータベースかShardのどちらからクエリーをしていますか?私はスキーマをセットアップし、断片から質問するときに再解析できなかったので、正しく問題を再現していないのだろうかと疑問に思いますか?

+0

Elastic Query Headデータベースからクエリを実行しているときにエラーが発生します。シャード上で同じクエリを実行すると、エラーは発生しません。 – SVC

関連する問題