我试图将一个Entity Framework上下文传递给一个表单构造函数以及一个表名,但是我试图从上下文中获取表对象。 BindingSource的数据源应设置为此表的数据,DataGridView的DataSource绑定到BindingSource。
任何人都可以帮助获取表数据让我们说一个类型tableName的列表并填充dgv吗?
$imagesPath = "/var/www/project/web/print/img/";
$images = array(
"###FRONTPAGE###" => $imagesPath . "company_frontpage_2016.svg",
"###LOGO###" => $imagesPath . "company_logo.svg"
);
foreach( $images as $image => $imageFile ) {
if ( is_readable( $imageFile ) ) {
$base64String = base64_encode( fread( fopen( $imageFile, "r" ), filesize( $imageFile ) ) );
$html = str_replace( $image, "data:image/svg+xml;base64," . $base64String, $html );
} else {
$html = str_replace( $image, "File nicht lesbar", $html );
}
}
感谢。
答案 0 :(得分:0)
嗯,您可以使用上下文中的元数据执行此类操作:
public MyForm(T context, string tableName)
{
ObjectContext objectContext = ((IObjectContextAdapter)breezeContext).ObjectContext;
var items= objectContext.MetadataWorkspace
.GetItems(System.Data.Entity.Core.Metadata.Edm.DataSpace.CSpace)
.Where(b => b.BuiltInTypeKind == BuiltInTypeKind.EntityType)
.ToList();
var dbSetPropertyType = breezeContext.GetType()
.GetProperties()
.FirstOrDefault(x => x.Name == tablename);// tablename must match with the DbSet property in your context
var dbset = breezeContext.Set(dbSetPropertyType.PropertyType.GenericTypeArguments.FirstOrDefault());
bindingSource.DataSource = dbset;
dgvDataviewer.DataSource = bindingSource;
}
旁注:我假设您的T
泛型类型具有如下通用约束:
public class YourContextWrapper<T> where T:DbContext