2

Code First EF を使用してプロジェクトをビルドします。

私は、Userそのプロパティの 1 つとして持つクラスを持っていますList<FriendGroup>(ここで、aFriendGroupは基本的に s の単なるコレクションでありUser、Google+ の「サークル」のようなものです)。 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>。しかしFriendGroupComplexType.

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; }
        ...
    }
}

UserList注釈付きのオブジェクトがいくつかありComplexTypeますが、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;
    }
4

1 に答える 1

0

次のことを試すことができます: Enum の代わりに int プロパティを使用するか、PM> Install-Package EntityFramework -Pre を使用して EF 5 ベータ 2 に更新してみてください。

于 2012-04-29T23:15:28.453 に答える