2009-06-07 4 views
1

を提出していません。LINQは私が次のコマンドを発行していますSQL</p> <p>にC#とLINQを使用しています変更

記事テーブルはまさにこのSQLを使用して作成されました:私はでSubmitChangesを呼び出し、時計にthis.AppManager.DB.GetChangeSet();をチェックする直前にbreakpoingを設定した場合

CREATE TABLE forum.Posts (
    PostID bigint NOT NULL IDENTITY, 
    ThreadID bigint NOT NULL, 
    ResponseToPostID bigint NULL, 
    UserID bigint NOT NULL, 
    Title varchar(60) NOT NULL, 
    [Text] text NOT NULL, 
    CreateDate datetime NOT NULL, 
    ModifyDate datetime NOT NULL, 
    ModifyUserID bigint NULL, 
    CONSTRAINT PK_Posts PRIMARY KEY CLUSTERED (PostID ASC) 
) 
GO 

ALTER TABLE forum.Posts 
    WITH CHECK 
    ADD CONSTRAINT FK_Posts_Threads 
    FOREIGN KEY (ThreadID) 
    REFERENCES forum.Threads (ThreadID) 
    ON UPDATE CASCADE 
    ON DELETE CASCADE 
GO 

ALTER TABLE forum.Posts 
    WITH CHECK 
    ADD CONSTRAINT FK_Posts_Users 
    FOREIGN KEY (UserID) 
    REFERENCES dbo.Users (UserID) 
    ON UPDATE CASCADE 
    ON DELETE CASCADE 
GO 

ALTER TABLE forum.Posts 
    WITH CHECK 
    ADD CONSTRAINT FK_Posts_ModifyUsers 
    FOREIGN KEY (ModifyUserID) 
    REFERENCES dbo.Users (UserID) 
    ON UPDATE NO ACTION 
    ON DELETE NO ACTION 
GO 

そう、それは言う:{挿入:0、アップデート: 0、削除:0}

明らかにそうではありません。

私の生成Postオブジェクトは、(約)次のようになります。

[Column(Storage="_PostID", AutoSync=AutoSync.OnInsert, DbType="BigInt NOT NULL IDENTITY", IsPrimaryKey=true, IsDbGenerated=true)] 
public long PostID[...] 

[Column(Storage="_ThreadID", DbType="BigInt NOT NULL")] 
public long ThreadID[...] 

[Column(Storage="_ResponseToPostID", DbType="BigInt")] 
public System.Nullable<long> ResponseToPostID[...] 

[Column(Storage="_UserID", DbType="BigInt NOT NULL")] 
public long UserID[...] 

[Column(Storage="_Title", DbType="VarChar(60) NOT NULL", CanBeNull=false)] 
public string Title[...] 

[Column(Storage="_Text", DbType="Text NOT NULL", CanBeNull=false, UpdateCheck=UpdateCheck.Never)] 
public string Text[...] 

[Column(Storage="_CreateDate", DbType="DateTime NOT NULL")] 
public System.DateTime CreateDate[...] 

[Column(Storage="_ModifyDate", DbType="DateTime NOT NULL")] 
public System.DateTime ModifyDate[...] 

[Column(Storage="_ModifyUserID", DbType="BigInt")] 
public System.Nullable<long> ModifyUserID[...] 

[Association(Name="User_Post", Storage="_User", ThisKey="ModifyUserID", OtherKey="UserID", IsForeignKey=true)] 
public User ModifyUser[...] 

[Association(Name="User_Post1", Storage="_User1", ThisKey="UserID", OtherKey="UserID", IsForeignKey=true, DeleteOnNull=true, DeleteRule="CASCADE")] 
public User User[...] 

[Association(Name="Thread_Post", Storage="_Thread", ThisKey="ThreadID", OtherKey="ThreadID", IsForeignKey=true, DeleteOnNull=true, DeleteRule="CASCADE")] 
public Thread Thread[...] 

そして、私のベースのコントローラで:

protected LanLordzApplicationManager AppManager 
{ 
    get 
    { 
     return (LanLordzApplicationManager)(Session["Application"] ?? new LanLordzApplicationManager(Server.MapPath("~/"))); 
    } 
} 

protected User CurrentUser 
{ 
    get 
    { 
     if (Session["UserID"] == null) 
     { 
      return null; 
     } 
     else 
     { 
      return this.AppManager.GetUserByUserID((long)Session["UserID"]); 
     } 
    } 
    set 
    { 
     Session["UserID"] = value.UserID; 
    } 
} 

// In LanLordzAppManager: 

public LanLordzDataContext DB 
{ 
    get 
    { 
     return this.db; 
    } 
} 

任意のアイデアを間違って何が起こっているかのよう?

答えて

1

あなたのエラーは次の行にある:

return (LanLordzApplicationManager)(Session["Application"] ?? 
    new LanLordzApplicationManager(Server.MapPath("~/"))); 

ロジックを使用すると、セッションにApplicationManagerのを追加する必要があることを示すように思われます。

+0

あなたは正しいです。私はどうしてそんなに盲目的になりますか?ありがとう、私はそれがショートカットを使用するために得るものだと思います。 –

2

DBはAppManagerのプロパティであるように見えるので、プロパティアクセサのコードを表示できますか?あなたのコードは大丈夫ですので、私が考えることができる唯一のことは、新しいデータコンテキストがアクセサを介して生成されていることです。

+0

私のAppManagerアクセサで更新されました。 –

+0

あなたの質問をAppManagerのDBアクセサコードでも更新してください。 –

+0

+1、あなたは正しいです。私は、彼がラインを見つけたので、レッピーの答えを出しました。 –

関連する問題