Два “overloads” не находятся в том же объеме. По умолчанию компилятор только рассматривает самый маленький объем имени, пока это не находит соответствие имени. Аргумент, соответствующий, сделан впоследствии . В Вашем случае это означает, что компилятор видит B::DoSomething
. Это тогда пытается соответствовать списку аргументов, который перестал работать.
Одним решением была бы к выпадающему перегрузка от A
в B
объем:
class B : public A {
public:
using A::DoSomething;
// …
}
Вы привязываетесь напрямую к сущности? Конечно, похоже. Таким образом, у вас есть два варианта:
Я бы выбрал №2 лично. Я думаю, вы всегда должны использовать модели просмотра / редактирования, и это отличный пример того, почему.
Это проблема с MVC2 и Entity Framework 4 или это задумано? Похоже, что проверка свойств EF отлично работает для полей datetime, не допускающих значения NULL (обязательных), а проверка типа данных числовых полей по сравнению со строковыми работает без использования ViewModels.
Я воссоздал проблему, используя простую таблицу FOOBAR, используя единственный столбец varchar (50), не допускающий значения NULL, с именем barName в slq 2008. Я сгенерировал модель EF из этой базы данных и быстро добавил контроллер и представление CREATE для ФУБАР сущность. Если я попытаюсь выполнить POST для действия CREATE, не вводя значение для свойства barName, VS перейдет к исключению в файле модели designer.cs (точно так же, как указано выше). Когда я пытаюсь обойти исключение, в форме появляется сообщение о проверке, а поле выделяется розовым цветом.
Похоже, что-то стреляет не в правильной последовательности. Поскольку исключение возникает до того, как VS перейдет к методу HTTPPOST CREATE.
Я нашел полезным код из примера ASP.Net MvcMusicStore. http://mvcmusicstore.codeplex.com/releases/view/44445#DownloadId=119336
Похоже, привязка к ViewModel решает проблему.
namespace MvcMusicStore.ViewModels
{
public class StoreManagerViewModel
{
public Album Album { get; set; }
public List<Artist> Artists { get; set; }
public List<Genre> Genres { get; set; }
}
}
........
namespace MvcMusicStore.Models
{
[MetadataType(typeof(AlbumMetaData))]
public partial class Album
{
// Validation rules for the Album class
[Bind(Exclude = "AlbumId")]
public class AlbumMetaData
{
[ScaffoldColumn(false)]
public object AlbumId { get; set; }
[DisplayName("Genre")]
public object GenreId { get; set; }
[DisplayName("Artist")]
public object ArtistId { get; set; }
[Required(ErrorMessage = "An Album Title is required")]
[StringLength(160)]
public object Title { get; set; }
[DisplayName("Album Art URL")]
[StringLength(1024)]
public object AlbumArtUrl { get; set; }
[Required(ErrorMessage = "Price is required")]
[Range(0.01, 100.00, ErrorMessage="Price must be between 0.01 and 100.00")]
public object Price { get; set; }
}
}
}