Code First EFを使用してプロジェクトをビルドします。ASP.NET MVC 3:私のクラスは複雑なタイプだと思うのはなぜですか?
私は、そのプロパティの1、List<FriendGroup>
(FriendGroup
は一種のGoogle+での「円」のよう、基本的にUser
秒の単なる集まりである。)として、持っているUser
クラスを持っています。 FriendGroup
は、POCOとは別のファイルで定義されています...ここには...私は決してそれがComplexType
であるとは言いませんでした。
しかし、私は自分のアプリケーションを実行しようとすると、私は例外を取得、
System.InvalidOperationException: The type 'FriendGroup' has already been configured as an entity type. It cannot be reconfigured as a complex type.
私は、誰もがASP.NETは、私のクラスはComplexType
で決めた理由に提供することができるかもしれない任意の洞察力に感謝することでしょう。前もって感謝します!
ETA:私のモデルから関連するビット:
namespace Clade.Models
{
public class User
{
[Key]
public int userID { get; private set; }
[Required]
public Profile profile { get; set; }
[Required]
public string userName { get; set; }
...
public List<FriendGroup> friendGroups { get; set; }
...
public List<AchievementEarned> achievementsEarned { get; set; }
}
}
namespace Clade.Models
{
public class FriendGroup
{
[Key]
[HiddenInput(DisplayValue = false)]
public int friendGroupID { get; private set; }
[HiddenInput(DisplayValue = false)]
public int userID { get; set; }
[Required]
public string friendGroupName { get; set; }
public Privacy defaultPrivacy { get; set; }
[Timestamp]
public DateTime dateCreated { get; set; }
public List<User> usersInFG { get; set; }
public void UpdateMe(FriendGroup editedFG)
{
friendGroupName = editedFG.friendGroupName;
defaultPrivacy = editedFG.defaultPrivacy;
usersInFG = editedFG.usersInFG;
}
}
}
ありEFコード、リポジトリなどもありますが、それらのどれもが任意のPOCOの内部の仕組みについては何も知りません。私がここに見るのは、がの場合、User
はList<FriendGroup>
、FriendGroup
はList<User>
です。しかし、FriendGroup
をComplexType
として注釈したものは今まで存在していませんでした。
ETA(2):Profile
もちょうどPOCOです:
namespace Clade.Models
{
public class Profile
{
[Key]
public int profileID { get; private set; }
public User user { get; set; }
public DiscussionGroup dg { get; set; }
public string location { get; set; }
public Privacy locationPrivacy { get; set; }
public string aboutMe { get; set; }
public Privacy aboutMePrivacy { get; set; }
...
}
}
User
はComplexType
-annotatedオブジェクトのカップルのList
秒を持っているんが、EFは、これらの文句はなかったです。
namespace Clade.Models
{
[ComplexType]
public class AchievementEarned
{
public Achievement achievement { get; set; }
[Timestamp]
public DateTime dateEarned { get; set; }
}
}
ETA(3):ここでエラーが発生しUserRepository
における方法です。それはvar results
で始まる行で起こります。
public bool Add(User newUser)
{
bool rv = false;
//check to make sure no one else has the same username first
var results = from user in Users
where user.userName.Equals(newUser.userName)
select user;
if (results.Count() == 0)
{
this.context.Users.Add(newUser);
this.Commit();
rv = true;
}
return rv;
}
列挙型をサポートしていますモデル、必要なビット(コンパイル済み)、スケールダウンされたバージョンを提供する必要があります。これはおそらく、モデル、流暢な注釈などを設定する方法に関係しているでしょう。 – NSGaga
私はPOCO宣言のビットをすべての関連する注釈とともに更新しました。 Fluentを使用していないため、そこに追加するものはありません。ありがとう! –
プライバシークラスコードを提供できますか?どのバージョンのEFを使用していますか? –