9 Mayıs 2015 Cumartesi

View'e Controller inherit etmek

@inherits MVCWithAutofac.Web.BasePages.CustomBasePage

using MVCWithAutofac.Core.Interfaces;
using System.Web.Mvc;

namespace MVCWithAutofac.Web.BasePages
{
    public class CustomBasePage : WebViewPage
    {
        public ITeamRepository teamRepo { get; set; }
        public IRepository repo { get; set; }

        public override void Execute() { }
    }
}

Autofac kullanarak

Guid uzunluklar

It depends on how you format the Guid:
  • Guid.NewGuid().ToString() => 36 characters (Hyphenated)
    outputs: 12345678-1234-1234-1234-123456789abc
  • Guid.NewGuid().ToString("D") => 36 characters (Hyphenated, same as ToString())
    outputs: 12345678-1234-1234-1234-123456789abc
  • Guid.NewGuid().ToString("N") => 32 characters (Digits only)
    outputs: 12345678123412341234123456789abc
  • Guid.NewGuid().ToString("B") => 38 characters (Braces)
    outputs: {12345678-1234-1234-1234-123456789abc}
  • Guid.NewGuid().ToString("P") => 38 characters (Parentheses)
    outputs: (12345678-1234-1234-1234-123456789abc)
  • Guid.NewGuid().ToString("X") => 68 characters (Hexadecimal)
    outputs: {0x12345678,0x1234,0x1234,{0x12,0x34,0x12,0x34,0x56,0x78,0x9a,0xbc}}

Entity Framework Migrate Database to Latest Version

  public class DatabaseContext : DbContext
    {
        public DatabaseContext()
            : base("name=DatabaseContext")
        {
            //Eğer modelde bir değişiklik olduysa veritabanını günceller
            Database.SetInitializer(new MigrateDatabaseToLatestVersion<DatabaseContext, Configuration>());
        }
}

6 Mayıs 2015 Çarşamba

Foreach döngü sırasını bulma

 foreach (var x in list.Select((value, index) => new { value, index }))
 {
     // Use x.value and x.index in here
 }

Razor html etiketleri silme

post.PostContent = Regex.Replace(post.PostContent, @"<[^>]*>", String.Empty);

post burda herhangi bir model. PostContent bir property. Regex expression ile otomatik html etiketlerini siliyoruz.

5 Mayıs 2015 Salı

Entity framework Hashset

    public class Post
    {
        [SuppressMessage("ReSharper", "DoNotCallOverridableMethodsInConstructor")]
        public Post()
        {
            Likes = new HashSet<Like>();
            Post1 = new HashSet<Post>();
        }
....
diyelim mesala burda her like'dan bir tane olacağı anlamına geliyor. Likes listesindeki bütün veriler farklı oluyor. Tekrar eden sütun olmuyor ki olmaması da lazım veri tutarlılığı için

4 Mayıs 2015 Pazartesi

Mock ModelState

This may be a silly example, but hopefully it moves the discussion forward:
The following code is in my Controller Action: 
if (ViewData.ModelState.Count > 10)
{
ViewData["Message"] = "Too many errors to continue";return View();
}
Here is a test with mocking and a test wtihout mocking:
[Test]public void Test11ModelStateErrorsWithMock()
{
HomeController homeController = new HomeController();

MockRepository mockRepository = new MockRepository();
ModelStateDictionary mockModelStateDictionary = (ModelStateDictionary)mockRepository.DynamicMock(typeof(ModelStateDictionary));
homeController.ViewData.ModelState = mockModelStateDictionary;
Expect.Call(mockModelStateDictionary.Count).Return(11);
mockRepository.ReplayAll();
ViewResult viewResult = (ViewResult)homeController.About();
mockRepository.VerifyAll();
Assert.AreEqual("Too many errors to continue", viewResult.ViewData["Message"]);
}
[Test]public void Test11ModelStateErrorsWithoutMock()
{
HomeController homeController = new HomeController();
homeController.ViewData.ModelState.AddModelError("1""FakeValue""FakeException");
homeController.ViewData.ModelState.AddModelError("2""FakeValue""FakeException");
homeController.ViewData.ModelState.AddModelError("3""FakeValue""FakeException");
homeController.ViewData.ModelState.AddModelError("4""FakeValue""FakeException");
homeController.ViewData.ModelState.AddModelError("5""FakeValue""FakeException");
homeController.ViewData.ModelState.AddModelError("6""FakeValue""FakeException");
homeController.ViewData.ModelState.AddModelError("7""FakeValue""FakeException");
homeController.ViewData.ModelState.AddModelError("8""FakeValue""FakeException");
homeController.ViewData.ModelState.AddModelError("9""FakeValue""FakeException");
homeController.ViewData.ModelState.AddModelError("10""FakeValue""FakeException");
homeController.ViewData.ModelState.AddModelError("11""FakeValue""FakeException");
ViewResult viewResult = (ViewResult)homeController.About();
Assert.AreEqual("Too many errors to continue", viewResult.ViewData["Message"]);
}

In my opinion, the test with the mock is less verbose and shows the intent better.  It is easier to change (for example if the requirement changed to having a limit of 20 errors).

.net 6 mapget kullanımı

 app.UseEndpoints(endpoints => {     endpoints.MapGet("/", async context =>     {         var response = JsonConvert.Seriali...