andrijam
uto 10.8.2021 16:17
C# - Problemi i rješenja
andrijam
uto 10.8.2021 16:17
Hazar
pon 20.9.2021 20:37
-
Pero Dinamit
sri 8.12.2021 13:28
Imam klasu koju popunjavam neki testnim podacima koji se ponavljaju.
class GetDoc
{
public Document docum1 = new Document
{
Title = "title 1",
Content = new List<IContent> {
new Section
{
Title = "title",
Size = ContentSize.Large,
Content = new List<IContent>
{
new HeaderValue
{
Header = "header",
Value = "yes",
Size = ContentSize.Large,
Orientation = Orientation.Horizontal,
IsDoubleSpace = false
},
new HeaderValue
{
Header = "header",
Value = "no",
Size = ContentSize.Large,
Orientation = Orientation.Horizontal,
IsDoubleSpace = false
},
new HeaderValue
{
Header = "header",
Value = "1111",
Size = ContentSize.Large,
Orientation = Orientation.Horizontal,
IsDoubleSpace = false
}
}
}
}
}
}
Ovaj boldani dio (Section) sa istim vrijednostima mi se kasnije ponavlja na nekoliko mjesta sa istim podacima.
Kako to mogu izbjeći?
sry na formatiranju, ne znam zašto tako napravi...
andrijam
pet 10.12.2021 15:04
To ti je lagano,samo izvučeš tu klasu, nešto ovako
class GetDoc
{
public Document docum1 = new Document
{
Title = "title 1",
Content = new List<IContent> {
}
document = mynewClass.Section
}
}
class myNewClass{
public static Section => new Section
{
Title = "title",
Size = ContentSize.Large,
Content = new List<IContent>
{
new HeaderValue
{
Header = "header",
Value = "yes",
Size = ContentSize.Large,
Orientation = Orientation.Horizontal,
IsDoubleSpace = false
},
new HeaderValue
{
Header = "header",
Value = "no",
Size = ContentSize.Large,
Orientation = Orientation.Horizontal,
IsDoubleSpace = false
},
new HeaderValue
{
Header = "header",
Value = "1111",
Size = ContentSize.Large,
Orientation = Orientation.Horizontal,
IsDoubleSpace = false
}
}
}
}
Dino-san
pon 9.5.2022 14:38
Pozdrav,
trebao bih pomoć u vezi izrade baze podataka na SSMS-u (Sql server management systemu). Zanima me jesam li na dobroj temi u forumu i je li bi tko mogao pomoći ? Hvala na razumijevanju.
Nuclear_Phoenix
pon 9.5.2022 14:39
Dino-san
pon 9.5.2022 19:23
Hvala.
Dino-san
sri 11.5.2022 13:11
Pozdrav,
dobio sam jedan zadatak koji se odnosi na postavljanje testova u Visual studio 2019 nad već djelomično dobivenom programskom logikom. Trebam nadopisati još nekoliko programskih dijelova kako bi aplikacija uspješno radila.
Problem se pojavljuje u prikazanoj slici koja treba imati navedene klase.
Zanima me što bi sada značio ovaj dio povezanog entiteta prikazan na slici ?
Entitet:
Upravitelj Transakcijama
+ Upravitelj Transakcijama()
+ PrebaciSredstva(izvorIBAN: string, odredisteIBAN: string, iznos: double) : Transakcija [?] + OdobriMinus(izvorIBAN: string, odobreniMinus: double) : void
Hvala.
R4zOR229
čet 12.5.2022 23:07
Pa kolko ja vidim to su metode(funkcije), ak na to mislis?
Dino-san
pet 13.5.2022 09:30
A što znači Transakcija [?] s upitnikom unutar uglatih zagrada ?
Provodi se nasljeđivanje bez ikakvih parametara unutar [?]. Jesam li u pravu ?
Nuclear_Phoenix
pet 13.5.2022 09:48
Array (lista) transakcija? [] je array.
R4zOR229
pet 13.5.2022 10:44
A što znači Transakcija [?] s upitnikom unutar uglatih zagrada ?
Provodi se nasljeđivanje bez ikakvih parametara unutar [?]. Jesam li u pravu ?
Po meni ta metoda ovak nekak izgleda
public Transakcija[] PrebaciSredstva(string izvorIBAN, string odredisteIBAN, double iznos)
ovaj upitnik bi mozda bio velicina polja, sam se to bas i ne koristi neg koristis listu da nebi moral znat velicinu. Kolko ja vidim ti nije nikakvo nasljevidanje nego return type metode, jedino je napisano na mutav nacin pa po sintaksi izgleda slicno inheretancu u c#
andrijam
pon 16.5.2022 12:58
Ne nisi, česta prasksa za prikaz potpisa funkcije u pseudo kodu je npr. imeFunkcije(int par1, int par2): returnType.
Ovo Transakcija[?] ne znam što znaći, možda je trebalo biti Transakcija?[], ili neodređena duljina arraya ili znaći bilo kola vrta liste. npr Transakcija[], IList<Transakcija>, IEnumerable<Transakcija> , ili samo jedan transakcija ako je operacija izvršena ako nije vrača se null
arnep
pet 3.6.2022 10:24
Pozdrav!
Pokušavam shvatiti način na koji funkcionira Dependency Injection u .NET Core.
Dakle, imam jedan ASP.NET Core WebAPI projekt i imam Class Library projekt. CL projekt mi predstavlja DataAccess Layer gdje mi se nalazi EntityFrameworkCore veza s postojećom bazom podataka.
Također imam sučelje i klasu koja implementira to sučelje (IUserRepository, UserRepository).
Kod u Program.cs datoteci mi izgleda ovako:
builder.Services.AddDbContext<SocialNetworkContext>(options => options.UseSqlServer(builder.Configuration.GetConnectionString("Database")));
builder.Services.AddScoped<IUserRepository, UserRepository>();
I sad, ja koristim taj context u UserRepository klasi:
private readonly SocialNetworkContext _socialNetworkContext;
public UserRepository(SocialNetworkContext context)
{
_socialNetworkContext = context;
}
Nakon toga UserRepository klasu koristim u pripadajućem kontroleru:
private IUserRepository _userRepository;
public UsersController(IUserRepository userRepository)
{
this._userRepository = userRepository;
}
I API funkcionira. Kako je to moguće?
Nisam nigdje instancirao ni DbContext klasu, niti UserRepository klasu. Nemam nigdje definiranu vezu između DbContext i UserRepository klasa, nisam nigdje injectao DbContext objekt u UserRepository klasu, no program i dalje funkcionira kao da objekt postoji.
Ne shvaćam baš ovaj koncept, proguglao sam već par objašnjenja za Dependency Injection no dosta mi je šturo objašnjeno.
tnakir
pet 3.6.2022 11:52
Pa definirao si u Program.cs da se injecta taj tvoj repository u svaki kontroler koji u konstruktoru ima taj tip klase kao parametar.
.net core ti sam instancira kontroler sa repozitorijem (ili logerom, business logic layer handlerom ili nečim šestim, ovisno što ti treba u tom kontroleru). Tako funkcionira DI u .net coreu.
Sad opet ovisi koji tip DI koristiš hoće li se tvoj repozitorij kreirati pri svakom requestu, pri svakoj konekciji ili samo prvi put kad je napravljen request: Tranzitni, Scoped ili Singleton
arnep
pet 3.6.2022 13:14
Pa definirao si u Program.cs da se injecta taj tvoj repository u svaki kontroler koji u konstruktoru ima taj tip klase kao parametar.
.net core ti sam instancira kontroler sa repozitorijem (ili logerom, business logic layer handlerom ili nečim šestim, ovisno što ti treba u tom kontroleru). Tako funkcionira DI u .net coreu.
Sad opet ovisi koji tip DI koristiš hoće li se tvoj repozitorij kreirati pri svakom requestu, pri svakoj konekciji ili samo prvi put kad je napravljen request: Tranzitni, Scoped ili Singleton
Znači isto tako je ova linija koda zaslužna da se DbContext injecta u svaku klasu koja ga koristi?
builder.Services.AddDbContext<SocialNetworkContext>(options => options.UseSqlServer(builder.Configuration.GetConnectionString("Database")));
Hvala na objašnjenju!
Nuclear_Phoenix
pet 3.6.2022 13:22
Ta je linija zadužena da se DI sustavu unutar .Neta "dojavi" da kod svakog instanciranja klase (repository) instancira DbContext. Samo instanciranje vrši DI sistem.
tnakir
pet 3.6.2022 14:00
Pa definirao si u Program.cs da se injecta taj tvoj repository u svaki kontroler koji u konstruktoru ima taj tip klase kao parametar.
.net core ti sam instancira kontroler sa repozitorijem (ili logerom, business logic layer handlerom ili nečim šestim, ovisno što ti treba u tom kontroleru). Tako funkcionira DI u .net coreu.
Sad opet ovisi koji tip DI koristiš hoće li se tvoj repozitorij kreirati pri svakom requestu, pri svakoj konekciji ili samo prvi put kad je napravljen request: Tranzitni, Scoped ili Singleton
Znači isto tako je ova linija koda zaslužna da se DbContext injecta u svaku klasu koja ga koristi?
builder.Services.AddDbContext<SocialNetworkContext>(options => options.UseSqlServer(builder.Configuration.GetConnectionString("Database")));
Hvala na objašnjenju!
Zapravo ti ta linija instancira sam DbContext i definira na koji će se DBMS spajati (SQL, mySQL, SQLite etc...) i kroz koji connString će se spajati na bazu (npr ovde možeš definirati da ti se u dev environmentu spaja na testnu bazu, a u produkcijskom na produkcijsku bazu).
DbContextu bi trebao pristupati isključivo kroz Repository. DI bi ti trebao instancirati repozitorij u svakom kontroleru koji ga ima u konstruktoru.
arnep
pet 3.6.2022 15:05
Zapravo ti ta linija instancira sam DbContext i definira na koji će se DBMS spajati (SQL, mySQL, SQLite etc...) i kroz koji connString će se spajati na bazu (npr ovde možeš definirati da ti se u dev environmentu spaja na testnu bazu, a u produkcijskom na produkcijsku bazu).
DbContextu bi trebao pristupati isključivo kroz Repository. DI bi ti trebao instancirati repozitorij u svakom kontroleru koji ga ima u konstruktoru.
Ne znači li to veliki udarac na performanse aplikacije?
Nas su na faksu učili da DbContext objekti uzimaju puno memorije pa je bolja opcija korisitit ih uz using blokove čime context objekt postoji samo unutar tog bloka koda. Sad vidim da se u praksi koriste uz DI pa mi je malo čudno.
Nuclear_Phoenix
pet 3.6.2022 15:56
DbContext je optimiziran da se brzo instancira, odradi što je potrebno (jedan unit of work, dakle jedan query ili jedan blok transakcija) i bude disposed. Ima neki sitni overhead kod instanciranja ali te profesore nitko nije obavijestio da je 1998. godina bila prije 25 godina i da server ima malo više od 128MB RAM.
arnep
pet 3.6.2022 16:38
DbContext je optimiziran da se brzo instancira, odradi što je potrebno (jedan unit of work, dakle jedan query ili jedan blok transakcija) i bude disposed. Ima neki sitni overhead kod instanciranja ali te profesore nitko nije obavijestio da je 1998. godina bila prije 25 godina i da server ima malo više od 128MB RAM.
Jasno. Hvala na objašnjenju! 


https://www.w3schools.com/cs/cs_data_types.php
ili za sizeof operator
Console.WriteLine(sizeof(float)); // 4
Console.WriteLine(sizeof(double)); // 8
Char nije 1 nego 2 byte jer C# koristi unicode.
Pokušaj sam skužiti što se događa kad double pokušaš ugurati u float.