- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我可以将我的 DbSet 从 DbSet 获取到 DbSet 吗?
public IQueryable<T> GetData<T>() where T : class, IData
{
var factory = EntityFrameworkConfiguration.TypeFactory[typeof(T)];
var context = factory.Item2(); // context is a DbContext.
var set = context.Set(factory.Item1); //factory.Item1 is a Type object.
return set.Cast<T>();
}
factory.Item1是实现Iterface T的Class的类型
简单情况:
context.Set(typeof(MyClass));
how to return DbSet<IMyClass> ?
只需添加更多信息:
System.InvalidCastException:无法从非通用 DbSet 为“AzureStoreSubscriptionWrapper”类型的对象创建 DbSet。和代码:
[Title("AzureStoreSubscription"), DataScope("public"), KeyPropertyName("id_AzureStoreSubscriptionId"), ImmutableTypeId("{7a71540b-2eeb-32ae-a850-61c97e28df06}"), RelevantToUserType(UserType.Developer)]
public interface IAzureStoreSubscription : IData, IEntityFrameworkProvided
{
// Properties
[StoreFieldType(PhysicalStoreFieldType.DateTime), ImmutableFieldId("{35977476-f662-528b-8236-e993b65796a5}")]
DateTime dt_ChangedTime { get; set; }
[ImmutableFieldId("{cdc95aeb-a951-533c-87de-811fd4967ea6}"), StoreFieldType(PhysicalStoreFieldType.DateTime)]
DateTime dt_CreatedTime { get; set; }
[StoreFieldType(PhysicalStoreFieldType.String, 50), ImmutableFieldId("{83e0e743-0ec3-5f29-a4bd-14a1b97a13a8}")]
DateTime? dt_DeletedTime { get; set; }
[StoreFieldType(PhysicalStoreFieldType.Guid), ImmutableFieldId("{82f8da9f-00fa-5a00-b392-d47cb2d362d5}")]
Guid id_AzureStoreSubscriptionId { get; set; }
[ImmutableFieldId("{3bbef642-c88b-5a13-be89-65d537de3eb6}"), StoreFieldType(PhysicalStoreFieldType.Guid)]
Guid id_TenantId { get; set; }
[ImmutableFieldId("{273bd594-7aea-5ca0-b8da-4680a264bcfd}"), StoreFieldType(PhysicalStoreFieldType.String, 50)]
string nvc_Email { get; set; }
[StoreFieldType(PhysicalStoreFieldType.String, 50), ImmutableFieldId("{64d29805-d76a-55b0-a61a-abb76b5fd096}")]
string nvc_EntityState { get; set; }
[StoreFieldType(PhysicalStoreFieldType.String, 50), ImmutableFieldId("{a2172fef-de9a-559c-b33c-6c32d7f99727}")]
string nvc_OptIn { get; set; }
[ImmutableFieldId("{e1bb5d48-2d72-5ffc-b86f-f78216ea4ee4}"), StoreFieldType(PhysicalStoreFieldType.String, 50)]
string nvc_RawData { get; set; }
[ImmutableFieldId("{3e879595-9bbd-555f-8f63-f438e722915a}"), StoreFieldType(PhysicalStoreFieldType.String, 50)]
string nvc_ResourceType { get; set; }
[StoreFieldType(PhysicalStoreFieldType.String, 50), ImmutableFieldId("{67bd2cba-9c36-594c-8586-39c71974e572}")]
string nvc_SubscriptionId { get; set; }
}
public class C1AzureStoreRPContext : DbContext
{
// Methods
public C1AzureStoreRPContext(string connectionstring);
// Properties
public DbSet<AzureStoreResourceWrapper> AzureStoreResource { get; set; }
public DbSet<AzureStoreSubscriptionWrapper> AzureStoreSubscription { get; set; }
}
[Table("AzureStoreSubscriptions", Schema="cwac")]
public class AzureStoreSubscriptionWrapper : AzureStoreSubscription, IAzureStoreSubscription, IData, IEntityFrameworkProvided
{
// Fields
private DataSourceId _dataSourceId;
// Methods
public AzureStoreSubscriptionWrapper();
// Properties
[StoreFieldType(PhysicalStoreFieldType.DateTime), ImmutableFieldId("{35977476-f662-528b-8236-e993b65796a5}")]
DateTime IAzureStoreSubscription.dt_ChangedTime { get; set; }
[ImmutableFieldId("{cdc95aeb-a951-533c-87de-811fd4967ea6}"), StoreFieldType(PhysicalStoreFieldType.DateTime)]
DateTime IAzureStoreSubscription.dt_CreatedTime { get; set; }
[StoreFieldType(PhysicalStoreFieldType.String, 50), ImmutableFieldId("{83e0e743-0ec3-5f29-a4bd-14a1b97a13a8}")]
DateTime? IAzureStoreSubscription.dt_DeletedTime { get; set; }
[StoreFieldType(PhysicalStoreFieldType.Guid), ImmutableFieldId("{82f8da9f-00fa-5a00-b392-d47cb2d362d5}")]
Guid IAzureStoreSubscription.id_AzureStoreSubscriptionId { get; set; }
[ImmutableFieldId("{3bbef642-c88b-5a13-be89-65d537de3eb6}"), StoreFieldType(PhysicalStoreFieldType.Guid)]
Guid IAzureStoreSubscription.id_TenantId { get; set; }
[ImmutableFieldId("{273bd594-7aea-5ca0-b8da-4680a264bcfd}"), StoreFieldType(PhysicalStoreFieldType.String, 50)]
string IAzureStoreSubscription.nvc_Email { get; set; }
[StoreFieldType(PhysicalStoreFieldType.String, 50), ImmutableFieldId("{64d29805-d76a-55b0-a61a-abb76b5fd096}")]
string IAzureStoreSubscription.nvc_EntityState { get; set; }
[StoreFieldType(PhysicalStoreFieldType.String, 50), ImmutableFieldId("{a2172fef-de9a-559c-b33c-6c32d7f99727}")]
string IAzureStoreSubscription.nvc_OptIn { get; set; }
[ImmutableFieldId("{e1bb5d48-2d72-5ffc-b86f-f78216ea4ee4}"), StoreFieldType(PhysicalStoreFieldType.String, 50)]
string IAzureStoreSubscription.nvc_RawData { get; set; }
[ImmutableFieldId("{3e879595-9bbd-555f-8f63-f438e722915a}"), StoreFieldType(PhysicalStoreFieldType.String, 50)]
string IAzureStoreSubscription.nvc_ResourceType { get; set; }
[StoreFieldType(PhysicalStoreFieldType.String, 50), ImmutableFieldId("{67bd2cba-9c36-594c-8586-39c71974e572}")]
string IAzureStoreSubscription.nvc_SubscriptionId { get; set; }
public DataSourceId DataSourceId { get; }
}
最佳答案
能不能不要再在DbSet上运行Cast方法了?
http://msdn.microsoft.com/en-us/library/gg696369(v=vs.113).aspx
因此,如果以下是您的 DbSet:
var myClassSet = context.Set(typeof(MyClass));
你应该可以像这样转换它:
return myClassSet.Cast<IMyClass>();
它应该通过直接转换进行转换,因此转换为继承类时应该没有问题。如果这不起作用,请查看此链接:
希望对您有所帮助。
关于c# - 将 DbSet 转换为 DbSet<T>,其中 T 是 dbset 元素类型的接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20296107/
我可以将我的 DbSet 从 DbSet 获取到 DbSet 吗? public IQueryable GetData() where T : class, IData { var
版本信息: 我正在使用 C# 4.5、Entity Framework 6.0 和 MEF。 代码和单元测试 我创建了一个测试项目来解释这个问题: https://skydrive.live.com/
在 Entity Framework Code First 中,当我声明实体时,我必须使用 DbSet<> 类型的属性。例如: public DbSet Products { get; set; }
我们目前正在集成一个为我们提供数据的外部系统。该系统包含有关客户许可证及其更新时间的信息。每个许可证或作为模型调用的 TPCase 可以有多个更新周期 TPRenewalCycle。然后,客户可以在我
我的问题是我正在使用的系统期望数据为 IQuearable entityframework 给我的数据为 IQueryable 这是我需要实现的接口(interface): public IQuery
我一直在使用 Add() 并遇到一个问题,即当 Add 一个子实体时,父实体在数据库中被复制。使用 Attach() 解决了这个问题,但我想知道为什么而不是盲目地摸索。 最佳答案 好吧,当您使用 At
我想通过实体模型(使用模型优先方法创建)将我的 DataGridView 控件数据绑定(bind)到数据库,我正在使用 EF 5.0、.NET 4.5 和 winforms 我的绑定(bind)组织如
Entity Framework 6中有多种添加/删除实体的方法,例如添加实体,我们可以使用:- b.Students.Add(student); db.SaveChanges(); 或 db.Ent
我想要一个字符串列表,并使用 EF-CodeFirst 将它们保存到数据库或从数据库加载它们。这是我的 DbContext 类: public class KeysDbContext : DbCont
我有两种类型的实体:员工实体和办公室实体,两者之间存在一对多关系,因此一个办公室有很多员工。对于 EF,在上下文文件中为每个实体创建一个 DbSet: public DbSet Offices { g
我的 Entity Framework 上下文: public class MyContext : DbContext { public DbSet Companies { get; set;
我正在尝试在 mac os webapi 上使用 asp.net core 2.1 调用 View 或存储过程。 using System; using System.Linq; using Auth
假设我有两个不同的类(class)。它们共享一些属性,但也有一些单独的属性。 public class A { // Shared properties public int Id {
这个问题在这里已经有了答案: 9年前关闭。 Possible Duplicate: ObjectSet.Context vs DbSet 首先从 EF 代码中的 DbSet,有没有办法引用父 DbCo
DbSet.Add() 将单个实体添加到 DbSet。但是没有 DbSet.AddRange() 来添加实体列表。有没有一种方法可以直接从 EF 调用,允许我添加实体列表?如果没有,EF不提供这种方法
我有通用的存储库模式的基本实现 IRepository其中包含 Add , Remove , Find等,我有更精确的存储库,例如 IActorRepository和 IFilmRepository源
我有一个包含许多 DbSet 的上下文。其中一些 DbSet 实现了一个称为 IActivity 的接口(interface),该接口(interface)包含许多常用字段,例如 TimeReceiv
(我这里使用的是 EF6)假设我有一个抽象类: public abstract class MyContext : DbContext 让我们使用它: public class MyTestConte
我想获取一个 DbSet,其中包含我存储在变量中的类名。 我试过这段代码: string name = "ParosLineas"; var dbset = (System.Data.Entity.D
我见过人们包装 DbSet在Lazy类别:Lazy> .我只能在互联网上找到另一个做 this 的人. 这样做的效果是什么? 最佳答案 EntityFramework 在内部避免做一些它需要在启动时做
我是一名优秀的程序员,十分优秀!