2つの選択肢が全く同じですが、そのうちの1つ(getBranchsForUser
)がエラーをスローします。LINQ to Entitiesでこのselect文にエラーが発生するのはなぜですか?
public User GetUserByUsername(string username)
{
var db = new AdventureWorksEntities();
User user = (from u in db.tabUser
where u.strUsername.Equals(username, StringComparison.CurrentCultureIgnoreCase)
select new User
{
strUsername = u.strUsername,
intID = u.intUserID,
}
).FirstOrDefault();
user.branchsList = getBranchsForUser(user.intID);
return user;
}
public List<Branch> getBranchsForUser(int userID)
{
var db = new AdventureWorksEntities();
List<Branch> branchsList = (from u in db.tabBranchs
where u.intUserID.Equals(userID)
select new Branch
{
dblGoal = u.dblGoal,
intNbOfGradeForAYear = u.IntNBOfGradeForAYear,
strName = u.strName
}
).ToList();
return branchsList;
}
IはgetBranchsForUser方法において、次のエラーを取得:
[System.NotSupportedException] { "指定された型部材は 'intUserID' エンティティにLINQでサポートされていないだけイニシャライザ、エンティティメンバー。エンティティのナビゲーションプロパティがサポートされています。 "}
System.NotSupportedException
はなぜGetUserByUsername
方法のためにもそれを得ることはありませんか?私はあなたがにマップされていないプロパティをマップしようとしていると思います
CREATE TABLE [dbo].[tabBranchs] (
[intBranchID] INT NOT NULL,
[intUserID] INT NOT NULL,
[strName] TEXT NOT NULL,
[dblGoal] FLOAT (53) NULL,
[IntNBOfGradeForAYear] INT NOT NULL,
CONSTRAINT [PK_tabBranchs] PRIMARY KEY CLUSTERED ([intBranchID] ASC),
CONSTRAINT [FK_tabBranchs_ToTable] FOREIGN KEY ([intUserID]) REFERENCES [dbo].[tabUser] ([intUserID])
);
CREATE TABLE [dbo].[tabUser] (
[intUserID] INT NOT NULL,
[strUsername] VARCHAR (MAX) NOT NULL,
[strPassword] VARCHAR (MAX) NOT NULL,
CONSTRAINT [PK_tabUser] PRIMARY KEY CLUSTERED ([intUserID] ASC)
);
EDIT 2
public class Branch {
public string strName { get; set; }
public List<Mark> markList { get; set; }
public double dblAverage { get; set; }
public double? dblGoal { get; set; }
public bool bHasGoal { get; set; }
public int intNbOfGradeForAYear { get; set; }
public Branch(){}
public Branch(string branchName, double goal, int nbOfNotes)
{
// TODO: Complete member initialization
this.strName = branchName;
this.dblGoal = goal;
bHasGoal = true;
this.intNbOfGradeForAYear = nbOfNotes;
}
プロパティ 'intUserID'はdatabaにマップされていますか列? – Jehof
'intUserId'の値をどうやって決めるのですか?それは計算列ですか、それともDBから直接得られますか? – Szeki
それは私のDBから直接来る – joohn