| @@ -16,19 +16,4 @@ | |||||
| <PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="6.0.3" /> | <PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="6.0.3" /> | ||||
| </ItemGroup> | </ItemGroup> | ||||
| <ItemGroup> | |||||
| <Compile Update="Properties\Resources.Designer.cs"> | |||||
| <DesignTime>True</DesignTime> | |||||
| <AutoGen>True</AutoGen> | |||||
| <DependentUpon>Resources.resx</DependentUpon> | |||||
| </Compile> | |||||
| </ItemGroup> | |||||
| <ItemGroup> | |||||
| <EmbeddedResource Update="Properties\Resources.resx"> | |||||
| <Generator>ResXFileCodeGenerator</Generator> | |||||
| <LastGenOutput>Resources.Designer.cs</LastGenOutput> | |||||
| </EmbeddedResource> | |||||
| </ItemGroup> | |||||
| </Project> | </Project> | ||||
| @@ -1,4 +1,6 @@ | |||||
| using System.ComponentModel.DataAnnotations.Schema; | |||||
| using System; | |||||
| using System.ComponentModel.DataAnnotations.Schema; | |||||
| using System.Text; | |||||
| namespace EF_Code_First.Models | namespace EF_Code_First.Models | ||||
| { | { | ||||
| @@ -7,7 +9,19 @@ namespace EF_Code_First.Models | |||||
| public int GradeId { get; set; } | public int GradeId { get; set; } | ||||
| public string? GradeName { get; set; } | public string? GradeName { get; set; } | ||||
| public string? Section { get; set; } | public string? Section { get; set; } | ||||
| [ForeignKey ("StudentId")] | |||||
| [ForeignKey("StudentId")] | |||||
| public ICollection<Student>? Students { get; set; } | public ICollection<Student>? Students { get; set; } | ||||
| public override string ToString() | |||||
| { | |||||
| StringBuilder builder = new StringBuilder(); | |||||
| builder.Append(GradeId); | |||||
| builder.Append('\u002C'); | |||||
| builder.Append(GradeName); | |||||
| builder.Append('\u002C'); | |||||
| builder.Append(Students.Count); | |||||
| return builder.ToString(); | |||||
| } | |||||
| } | } | ||||
| } | } | ||||
| @@ -22,14 +22,15 @@ namespace EF_Code_First.Models | |||||
| StringBuilder builder = new StringBuilder(); | StringBuilder builder = new StringBuilder(); | ||||
| builder.Append(StudentId); | builder.Append(StudentId); | ||||
| builder.Append(" :"); | |||||
| builder.Append('\u002C'); | |||||
| builder.Append(StudentName); | builder.Append(StudentName); | ||||
| builder.Append(" :"); | |||||
| builder.Append('\u002C'); | |||||
| builder.Append(DateOfBirth); | builder.Append(DateOfBirth); | ||||
| builder.Append(" :"); | |||||
| builder.Append('\u002C'); | |||||
| builder.Append(Weight); | builder.Append(Weight); | ||||
| builder.Append(" :"); | |||||
| builder.Append('\u002C'); | |||||
| builder.Append(Height); | builder.Append(Height); | ||||
| builder.Append(Grade.ToString()); | |||||
| return builder.ToString(); | return builder.ToString(); | ||||
| } | } | ||||
| } | } | ||||
| @@ -30,32 +30,19 @@ namespace EF_Code_First | |||||
| List<Grade> grades = ctx.Grades | List<Grade> grades = ctx.Grades | ||||
| .Include(st=> st.Students) | .Include(st=> st.Students) | ||||
| .ToList(); | .ToList(); | ||||
| foreach (var grade in grades) | |||||
| { | |||||
| Console.WriteLine(grade.ToString()); | |||||
| } | |||||
| List<Student> students = ctx.Students | List<Student> students = ctx.Students | ||||
| .Include(g=> g.Grade) | .Include(g=> g.Grade) | ||||
| .ToList(); | .ToList(); | ||||
| foreach (var s in students) | foreach (var s in students) | ||||
| { | { | ||||
| //Console.WriteLine(s.Grade.ToString); | |||||
| //var currentgrade = ctx.Grades.Single(g => g.GradeId == s.G_Id); | |||||
| //Console.WriteLine($"Grade = {currentgrade.ToString} "); | |||||
| StringBuilder b = new StringBuilder(); | |||||
| b.Append(s.StudentName); | |||||
| b.Append(": "); | |||||
| b.Append(s.Weight); | |||||
| b.Append(": "); | |||||
| b.Append(s.Height); | |||||
| b.Append(": "); | |||||
| b.Append(s.DateOfBirth); | |||||
| b.Append(": "); | |||||
| b.Append(s.Grade.GradeName); | |||||
| b.Append(": "); | |||||
| b.Append(s.Grade.Section); | |||||
| Console.WriteLine(b.ToString()); | |||||
| Console.WriteLine(s.ToString()); | |||||
| } | } | ||||
| Console.WriteLine (ctx.DbPath); | Console.WriteLine (ctx.DbPath); | ||||
| @@ -1,63 +0,0 @@ | |||||
| //------------------------------------------------------------------------------ | |||||
| // <auto-generated> | |||||
| // Dieser Code wurde von einem Tool generiert. | |||||
| // Laufzeitversion:4.0.30319.42000 | |||||
| // | |||||
| // Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn | |||||
| // der Code erneut generiert wird. | |||||
| // </auto-generated> | |||||
| //------------------------------------------------------------------------------ | |||||
| namespace EF_Code_First.Properties { | |||||
| using System; | |||||
| /// <summary> | |||||
| /// Eine stark typisierte Ressourcenklasse zum Suchen von lokalisierten Zeichenfolgen usw. | |||||
| /// </summary> | |||||
| // Diese Klasse wurde von der StronglyTypedResourceBuilder automatisch generiert | |||||
| // -Klasse über ein Tool wie ResGen oder Visual Studio automatisch generiert. | |||||
| // Um einen Member hinzuzufügen oder zu entfernen, bearbeiten Sie die .ResX-Datei und führen dann ResGen | |||||
| // mit der /str-Option erneut aus, oder Sie erstellen Ihr VS-Projekt neu. | |||||
| [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")] | |||||
| [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] | |||||
| [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] | |||||
| internal class Resources { | |||||
| private static global::System.Resources.ResourceManager resourceMan; | |||||
| private static global::System.Globalization.CultureInfo resourceCulture; | |||||
| [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] | |||||
| internal Resources() { | |||||
| } | |||||
| /// <summary> | |||||
| /// Gibt die zwischengespeicherte ResourceManager-Instanz zurück, die von dieser Klasse verwendet wird. | |||||
| /// </summary> | |||||
| [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] | |||||
| internal static global::System.Resources.ResourceManager ResourceManager { | |||||
| get { | |||||
| if (object.ReferenceEquals(resourceMan, null)) { | |||||
| global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("EF_Code_First.Properties.Resources", typeof(Resources).Assembly); | |||||
| resourceMan = temp; | |||||
| } | |||||
| return resourceMan; | |||||
| } | |||||
| } | |||||
| /// <summary> | |||||
| /// Überschreibt die CurrentUICulture-Eigenschaft des aktuellen Threads für alle | |||||
| /// Ressourcenzuordnungen, die diese stark typisierte Ressourcenklasse verwenden. | |||||
| /// </summary> | |||||
| [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] | |||||
| internal static global::System.Globalization.CultureInfo Culture { | |||||
| get { | |||||
| return resourceCulture; | |||||
| } | |||||
| set { | |||||
| resourceCulture = value; | |||||
| } | |||||
| } | |||||
| } | |||||
| } | |||||
| @@ -1,101 +0,0 @@ | |||||
| <?xml version="1.0" encoding="utf-8"?> | |||||
| <root> | |||||
| <!-- | |||||
| Microsoft ResX Schema | |||||
| Version 1.3 | |||||
| The primary goals of this format is to allow a simple XML format | |||||
| that is mostly human readable. The generation and parsing of the | |||||
| various data types are done through the TypeConverter classes | |||||
| associated with the data types. | |||||
| Example: | |||||
| ... ado.net/XML headers & schema ... | |||||
| <resheader name="resmimetype">text/microsoft-resx</resheader> | |||||
| <resheader name="version">1.3</resheader> | |||||
| <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> | |||||
| <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> | |||||
| <data name="Name1">this is my long string</data> | |||||
| <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> | |||||
| <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> | |||||
| [base64 mime encoded serialized .NET Framework object] | |||||
| </data> | |||||
| <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> | |||||
| [base64 mime encoded string representing a byte array form of the .NET Framework object] | |||||
| </data> | |||||
| There are any number of "resheader" rows that contain simple | |||||
| name/value pairs. | |||||
| Each data row contains a name, and value. The row also contains a | |||||
| type or mimetype. Type corresponds to a .NET class that support | |||||
| text/value conversion through the TypeConverter architecture. | |||||
| Classes that don't support this are serialized and stored with the | |||||
| mimetype set. | |||||
| The mimetype is used for serialized objects, and tells the | |||||
| ResXResourceReader how to depersist the object. This is currently not | |||||
| extensible. For a given mimetype the value must be set accordingly: | |||||
| Note - application/x-microsoft.net.object.binary.base64 is the format | |||||
| that the ResXResourceWriter will generate, however the reader can | |||||
| read any of the formats listed below. | |||||
| mimetype: application/x-microsoft.net.object.binary.base64 | |||||
| value : The object must be serialized with | |||||
| : System.Serialization.Formatters.Binary.BinaryFormatter | |||||
| : and then encoded with base64 encoding. | |||||
| mimetype: application/x-microsoft.net.object.soap.base64 | |||||
| value : The object must be serialized with | |||||
| : System.Runtime.Serialization.Formatters.Soap.SoapFormatter | |||||
| : and then encoded with base64 encoding. | |||||
| mimetype: application/x-microsoft.net.object.bytearray.base64 | |||||
| value : The object must be serialized into a byte array | |||||
| : using a System.ComponentModel.TypeConverter | |||||
| : and then encoded with base64 encoding. | |||||
| --> | |||||
| <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> | |||||
| <xsd:element name="root" msdata:IsDataSet="true"> | |||||
| <xsd:complexType> | |||||
| <xsd:choice maxOccurs="unbounded"> | |||||
| <xsd:element name="data"> | |||||
| <xsd:complexType> | |||||
| <xsd:sequence> | |||||
| <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> | |||||
| <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> | |||||
| </xsd:sequence> | |||||
| <xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" /> | |||||
| <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> | |||||
| <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> | |||||
| </xsd:complexType> | |||||
| </xsd:element> | |||||
| <xsd:element name="resheader"> | |||||
| <xsd:complexType> | |||||
| <xsd:sequence> | |||||
| <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> | |||||
| </xsd:sequence> | |||||
| <xsd:attribute name="name" type="xsd:string" use="required" /> | |||||
| </xsd:complexType> | |||||
| </xsd:element> | |||||
| </xsd:choice> | |||||
| </xsd:complexType> | |||||
| </xsd:element> | |||||
| </xsd:schema> | |||||
| <resheader name="resmimetype"> | |||||
| <value>text/microsoft-resx</value> | |||||
| </resheader> | |||||
| <resheader name="version"> | |||||
| <value>1.3</value> | |||||
| </resheader> | |||||
| <resheader name="reader"> | |||||
| <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> | |||||
| </resheader> | |||||
| <resheader name="writer"> | |||||
| <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> | |||||
| </resheader> | |||||
| </root> | |||||