Chucker
Kilopat
- Katılım
- 25 Ağustos 2016
- Mesajlar
- 475
- Çözümler
- 3
Daha fazla
- Cinsiyet
- Erkek
Veri tabanında tabloları temsil eden iki sınıfım var ve birebir ilişkiye sahipler, controller üzerinde create aksiyonunda ikisini aynı anda oluşturup birbirlerine atamam gerekiyor fakat başaramadım, böyle bir şey yapmak mümkün müdür?
Bu arada veri tabanında cars tablosuna da posts tablosuna da veri ekleniyor fakat birbirleriyle bağlantılı değiller, Posts tablosunda "CarId" sütunu hep "0" değerini alıyor.
C#:
public async Task<IActionResult> Create(CreatePostVM viewModel)
{
if (ModelState.IsValid)
{
var user = await _userManager.GetUserAsync(User);
Car car = new Car
{
Make = viewModel.Make,
Model = viewModel.Model,
Year = viewModel.Year,
Kilometer = viewModel.Kilometer,
HorsePower = viewModel.HorsePower,
LocationCountry = viewModel.LocationCountry,
LocationCity = viewModel.LocationCity,
CategoryId = viewModel.CategoryId,
FuelTypeId = viewModel.FuelTypeId,
TransmissionTypeId = viewModel.TransmissionTypeId,
CarExtras = new List<CarExtra>(),
Images = new List<Image>(),
};
Post post = new Post()
{
Title = viewModel.Title,
Description = viewModel.Description,
Price = viewModel.Price,
CoverImage = viewModel.CoverImage,
CreatorId = user.Id,
Car = car
};
if (viewModel.SelectedExtras != null)
{
foreach (var extra in viewModel.SelectedExtras)
{
var carExtra = new CarExtra()
{
CarId = post.CarId,
ExtraId = extra
};
post.Car.CarExtras.Add(carExtra);
}
}
if (viewModel.SelectedImages != null && viewModel.SelectedImages.Count > 0)
{
foreach (var file in viewModel.SelectedImages)
{
var fileName = Path.GetFileName(file.FileName);
var fileExtension = Path.GetExtension(fileName);
var uniqueFileName = Guid.NewGuid().ToString() + fileExtension;
var filePath = Path.Combine(Directory.GetCurrentDirectory(), "wwwroot/images", uniqueFileName);
using (var stream = new FileStream(filePath, FileMode.Create))
{
file.CopyTo(stream);
}
var image = new Image()
{
CarId = post.CarId,
Path = fileName
};
post.Car.Images.Add(image);
}
}
_db.Posts.Add(post);
await _db.SaveChangesAsync();
}
else
{
var errors = ModelState.Select(x => x.Value.Errors)
.Where(y => y.Count > 0)
.ToList();
return BadRequest(errors);
}
return RedirectToAction("GetAll");
}
Bu arada veri tabanında cars tablosuna da posts tablosuna da veri ekleniyor fakat birbirleriyle bağlantılı değiller, Posts tablosunda "CarId" sütunu hep "0" değerini alıyor.
Son düzenleyen: Moderatör: