知道标题有点模糊,对我的真实问题不是很具描述性,但是这里有。
我有一个新的ASP MVC项目,我有EF设置。它的工作就像一个魅力。 现在我想创建一个新的代码第一个模型,我将用它来存储RSS提要项。
我不想从头开始创建模型,而是非常希望使用System.ServiceModel.Syndication.SyndicationItem
作为模型的基础。我可能想要添加一些自定义字段,但是现在我几乎可以使用完全相同的字段和字段类型。
我的问题是,我可以从这个类继承到我的代码第一个模型吗?或者我必须将完全相同的字段和字段类型加倍?
答案 0 :(得分:1)
如果您只关注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);
}
}
答案 1 :(得分:0)
好的,我试过了。
<强>模型强>
namespace App.Models
{
public class FeedItem : System.ServiceModel.Syndication.SyndicationItem
{
}
}
数据库上下文
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 &#39; SyndicationPerson&#39;没有定义键。为此定义密钥 的EntityType。 App.DAL.SyndicationElementExtension :: EntityType&#39; SyndicationElementExtension&#39;没有定义键。限定 此EntityType的关键。 App.DAL.SyndicationCategory: :EntityType&#39; SyndicationCategory&#39;没有定义键。定义密钥 对于此EntityType。 App.DAL.SyndicationLink :: EntityType &#39; SyndicationLink&#39;没有定义键。为此定义密钥 的EntityType。 SyndicationContents ::引用的EntitySet &#39; SyndicationContents&#39; for End&#39; FeedItem_Copyright_Target&#39;不可能 在包含EntityContainer中找到。 SyndicationContents :: The 引用的EntitySet&#39; SyndicationContents&#39;为了结束 &#39; SyndicationFeed_Copyright_Target&#39;无法找到 包含EntityContainer。 SyndicationContents ::引用的 EntitySet&#39; SyndicationContents&#39;为了结束 &#39; SyndicationFeed_Description_Target&#39;无法找到 包含EntityContainer。 SyndicationContents ::引用的 EntitySet&#39; SyndicationContents&#39; for End&#39; SyndicationFeed_Title_Target&#39; 无法在包含EntityContainer中找到。 SyndicationContents ::引用的EntitySet&#39; SyndicationContents&#39; for End&#39; FeedItem_Summary_Target&#39;在含有中找不到 EntityContainer相关。 SyndicationContents ::引用的EntitySet &#39; SyndicationContents&#39; for End&#39; FeedItem_Title_Target&#39;不可能 在包含EntityContainer中找到。 SyndicationPersons: EntityType:EntitySet&#39; SyndicationPersons&#39;是基于类型 &#39; SyndicationPerson&#39;没有定义键。 SyndicationElementExtensions:EntityType:EntitySet &#39; SyndicationElementExtensions&#39;是基于类型 &#39; SyndicationElementExtension&#39;没有定义键。 SyndicationCategories:EntityType:EntitySet&#39; SyndicationCategories&#39; 基于类型&#39; SyndicationCategory&#39;没有定义键。 SyndicationLinks:EntityType:EntitySet&#39; SyndicationLinks&#39;是根据 类型&#39; SyndicationLink&#39;没有定义键。 SyndicationContents: EntityType:EntitySet&#39; SyndicationContents&#39;是基于类型 &#39; SyndicationContent&#39;没有定义键。
我可能错过了一些东西。