私はAzure Mobile AppsでC#を勉強しようとしています。私は、私のAzure SQL DBにリンクするモデルを作成し、このようにDataObjectを作成しました:私は上記の公共int型のIDをコメントアウトAzure Mobile Appsのデータモデルに文字列IDがあるのはなぜですか?
public class Account : EntityData
{
//public int id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string PhoneNumber { get; set; }
public string Password { get; set; }
public DateTime dtCreated { get; set; }
public Guid oGuid { get; set; }
}
お知らせ。それは私にクエリで重複列エラーを与えていた。
最後に、新しく作成したアカウントデータオブジェクトを使用してコントローラを作成しました。
私はアプリケーションを実行し、 "テーブル/アカウント"関数をヒットし、ゼロ行を返しました(ただし、データがあり、私はAzureモバイルアプリケーションで使用しているユーザーでクエリできます)。
私は、このように、モデルスキーマに気づい:
[
{
"id": 0,
"FirstName": "string",
"LastName": "string",
"PhoneNumber": "string",
"Password": "string",
"dtCreated": "2016-07-06T17:45:47.114Z",
"oGuid": "string",
"Id": "string",
"Version": "string",
"CreatedAt": "2016-07-06T17:45:47.114Z",
"UpdatedAt": "2016-07-06T17:45:47.114Z",
"Deleted": true
}
]
を私が構成されたモデルで参照の問題がいくつかあります(と列の一部がどこから来ている私は知らないが...)
最初に、idは2回、int(これは私のものでなければならない)とstringとしての別のIDとしてリストされ、どこから来たのかわかりません。
また、DBでは、oGuidはuniqueIdentifier型です。文字列ではありません。私はまだテストすることができないので、これは問題かもしれません。
次に、CreatedAt(datetime)、UpdatedAt(datetime)、Version(string)、およびDeleted(bit)を含む、私のDBに存在しない他の列があります。
私はその呼び出しからデータが戻ってこない理由/理由は、データの不一致があると考えています。
モデルにリストされている他の列をAPIテストに追加する必要がありますか?
また、特定のアカウントを読み込むために/ table/Account/3を呼び出そうとしましたが、行が返されません...モデルの不一致が予想されますが、それが問題かどうかはわかりませんそれを引き起こす何か他のものか?エラーや警告は表示されません。
更新
私がモデル第一およびアズールとどのように新しいコードをAzureでの既存のDBを添付することで何が起こっているかを考え出しました。私は、他の時間を節約することを期待してここに投稿します。これは本当に簡単だったはずです。私はDBを手で制御したいので、codefirst(まだ)のファンではありません...だから、これは私にはdbバックエンドで作業するのがずっと簡単です。
私はモデルの下でモデルを右クリックし、新しいエンティティデータモデルを右クリックし、azure db名とパスワードで追加して「ユーザー作成のプロファイル名」を付けて、新しいプロジェクト(Azure Mobile App)以下に使用される。この接続は、以下のようにweb.configで編集する必要があります。
その後、DataObjects(MS必須列なし)でテーブルのモデルを作成し、データオブジェクトからコントローラを作成する必要がありました。私はその後、ウェブを編集しなければならなかった。非実体DB接続文字列を設定し、設定:例:
<add name="[user created preset name]" providerName="System.Data.SqlClient" connectionString="Server=[Azuredb server connection];initial catalog=[DBName];persist security info=True;user id=[user];password=[pass];MultipleActiveResultSets=True"/>
は最後に、MobileServiceContextに、私はAzureのSQLでテーブルにDataObjectのモデルをマッピングしなければならなかったし、デフォルトのMS_TableConnectionStringから使用する接続文字列を設定しますweb.configの接続文字列に追加します。
private const string connectionStringName = "Name=[user created preset name]";
とOnModelCreating下()私が追加:アカウントは、私がデータオブジェクトで作成され、tblAccountはAzureDBのテーブル名であるモデル(クラス)だった
modelBuilder.Entity<Account>().ToTable("tblAccount");
を。
私はちょうどStackoverflowがトローラーのような地獄になっているのが好きです。オフトピックのために閉じる?本当に? 「本、ツール、ソフトウェアライブラリ、チュートリアル、その他のオフサイトリソースをお薦めするか、見つけようとする質問は、スタックオーバーフローの話題にはなりません。それを解決するためにこれまでのところ。私は本やリンクなどの勧告を探しているわけではありませんが、それは提供されたものです。問題はそれを解決するために何が行われたかについて非常にうまく説明されました。私はこのサイトでほぼ完了しています。 – DaBlue
私は同意する、私はあなたをupvoted。 –
これを使用した後の別のコメント。 ID列の型は "string"ではなく "uniqueidentifier"でなければなりません。 – DaBlue