ASP MVC实体框架代码首先使用现有类



知道标题有点模糊,对我的真实问题不是很描述,但是这里是。

我有一个新的ASP MVC项目,我有EF设置。它像魅力一样工作。现在,我想创建一个新的代码第一个模型,我将用来存储RSS feed项目。

我非常想将System.ServiceModel.Syndication.SyndicationItem用作模型的基础,而不是从头开始创建模型。我可能想添加一些自定义字段,但是现在我几乎可以使用完全相同的字段和字段类型。

我的问题是,我可以从此类中继承到我的代码第一个模型吗?还是我必须使完全相同的字段和字段类型加倍?

如果您是您追求的syndicationItem和SyndicationCategory,并且不在乎忽略某些属性,则可以尝试以下内容:

public class FeedItem : SyndicationItem
{
    [Key]
    public int Id { get; set; }
    // additional properties go here
}
public class MyContext : DbContext
{
    public MyContext()
        : base("name=MyContext")
    {
    }
    public DbSet<FeedItem> FeedItems { get; set; }
    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        base.OnModelCreating(modelBuilder);
        modelBuilder.Entity<FeedItem>().HasKey<int>(f => f.Id);
        modelBuilder.Entity<SyndicationCategory>().HasKey(c => c.Name);
        // Ignore entities
        modelBuilder.Ignore<SyndicationPerson>();
        modelBuilder.Ignore<SyndicationLink>();
        modelBuilder.Ignore<SyndicationContent>();
        modelBuilder.Ignore<SyndicationElementExtension>();
        // Ignore properties
        modelBuilder.Entity<FeedItem>().Ignore(f => f.AttributeExtensions);
    }
}

好吧,我尝试过。

模型

namespace App.Models
{
    public class FeedItem : System.ServiceModel.Syndication.SyndicationItem
    {
    }
}

DB上下文

namespace App.DAL
{
    public partial class DbContext : IdentityDbContext<ApplicationUser>
    {
        public DbContext() : base("name=DbContext")
        {
        }
        public static DbContext Create()
        {
            return new DbContext();
        }
        public DbSet<FeedItem> FeedItems { get; set; }
    }
}

并在运行应用程序时得到回报。

app.dal.syndicationperson :: entityType " SyndicationPerson"没有定义密钥。为此定义钥匙 实体类型。app.dal.syndicationElementExtension:: EntityType" SyndicationElementExtension"没有定义键。定义 该实体类型的关键。app.dal.syndication category: :EntityType" SyndicationCategory"没有定义键。定义密钥 对于这个实体。app.dal.syndicationlink :: entityType " SyndicationLink"没有键定义。为此定义钥匙 实体类型。SyndicationContents ::引用的EntitySet " forefem_copyright_target"的'syndicationContents'不可能 在包含的实体中发现。SyndicationContents :: 引用的EntitySet'snddicationContents' 在 包含EntityContainer。SyndicationContents ::引用 EntitySet'syndicationContents' 在 包含EntityContainer。SyndicationContents ::引用 EntitySet'syndicationContents'for End'syndicationfeed_title_target' 在包含的实体中找不到。 SyndicationContents ::引用的EntitySet" syndicationContents' 对于结束的" FeedItem_summary_target",在包含中找不到 EntityContainer。SyndicationContents ::引用的EntitySet 'forefem_title_target'不可能是'syndicationContents'不可能 在包含的实体中发现。辛迪加普斯森: EntityType:EntitySet'SyndicationPersons'基于类型 没有定义键的"辛迪克森"。 SyndicationElementExtensions:EntityType:EntitySet " SyndicationElementExtensions"基于类型 没有定义键的" SyndicationElementExtension"。 SyndicationCategories:EntityType:EntitySet'SyndicationCategories' 是基于未定义键的类型" syndicationCategory"。 SyndicationLinks:EntityType:EntitySet'SyndicationLinks'基于 键入未定义键的" syndicationLink"。辛迪加符合人: EntityType:EntitySet'SyndicationContents'基于类型 没有定义键

我可能错过了一些东西。

最新更新