я застрял на сложном случае, я столкнулся при интеграции ASP.NET динамических данных + EF6Неверный сгенерированный URL-адрес для ссылки «просмотр ..». Данные ASP.NET Динамические
У меня есть несколько таблиц: Продукция -> ProductSales, отображение 1 - МНОГИЕ
База данных создана с использованием подхода EF CF.
Какой-то код из схемы Init.
CreateTable(
"dbo.ProductSales",
c => new
{
Id = c.Long(nullable: false, identity: true),
IsActive = c.Boolean(nullable: false),
Price = c.Int(nullable: false),
Description = c.String(),
Name = c.String(nullable: false),
Product_Id = c.Long(),
})
.PrimaryKey(t => t.Id)
.ForeignKey("dbo.Products", t => t.Product_Id)
.Index(t => t.Product_Id);
CreateTable(
"dbo.Products",
c => new
{
Id = c.Long(nullable: false, identity: true),
Description = c.String(),
IsNew = c.Boolean(nullable: false),
Discount = c.Int(nullable: false),
IsActive = c.Boolean(nullable: false),
Name = c.String(nullable: false),
Category_Id = c.Long(nullable: false),
})
.PrimaryKey(t => t.Id)
.ForeignKey("dbo.Categories", t => t.Category_Id, cascadeDelete: true)
.Index(t => t.Category_Id);
DTOS:
public class Product : Entity
{
public string Description { get; set; }
public bool IsNew { get; set; }
public int Discount { get; set; }
[DefaultValue(true)]
public bool IsActive { get; set; }
public virtual ICollection<ProductSale> Sales { get; set; }
[Required]
public virtual Category Category { get; set; }
public virtual ICollection<Photo> PhotoCollection { get; set; }
public virtual ICollection<Shop> Shops { get; set; }
}
public class ProductSale : Entity
{
public bool IsActive { get; set; }
public int Price { get; set; }
public string Description { get; set; }
public virtual ICollection<Photo> PhotoCollection { get; set; }
public virtual Product Product { get; set; }
}
public class Entity
{
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
}
Применение в основном работает отлично. но есть одна раздражающая проблема. Для случаев 1-МНОГО, как указано выше, DD будет строить "вид productsales" со ссылкой
/ProductSales/List.aspx? Product.Id = 1 - неправильный, думаю.
Я пытался сыграть с URL-адресом и нашел /ProductSales/List.aspx? Id = 1 - он работает.
UPDATE: ошибка у меня есть:
DataBinding: 'System.Web.DynamicData.Util.DictionaryCustomTypeDescriptor' не содержит свойство с именем 'Product'. Описание: Необработанное исключение возникло во время выполнения текущего веб-запроса. Просмотрите трассировку стека для получения дополнительной информации об ошибке и ее возникновении в коде. Сведения об исключении: System.Web.HttpException: DataBinding: «System.Web.DynamicData.Util.DictionaryCustomTypeDescriptor» не содержит свойства с именем «Продукт».
Я знаю, что могу перейти на шаблон ChildrenField и сделать некоторые махинации с помощью ChildrenPath, но надеюсь получить сладкое и ясное решение от сообщества, спасибо заранее.
Я не знаю, помогает ли это, но похоже, что Dynamic Data создает представление, для которого верхний уровень является Prodcut, и вы показываете все ProductSales для этого продукта. –